@xsolla/payment-client-core 0.2.20 → 0.2.21

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 (448) hide show
  1. package/{esm2022 → esm2020}/lib/core/combined-payment-methods/combined-payment-methods.service.mjs +5 -5
  2. package/{esm2022 → esm2020}/lib/core/countries-api/countries-api.service.mjs +5 -5
  3. package/{esm2022 → esm2020}/lib/core/country/country.service.mjs +5 -5
  4. package/{esm2022 → esm2020}/lib/core/credit-card/credit-card.service.mjs +4 -4
  5. package/esm2020/lib/core/device-finger-print/device-finger-print.service.mjs +67 -0
  6. package/{esm2022 → esm2020}/lib/core/edit-saved-methods/edit-saved-methods.service.mjs +5 -5
  7. package/esm2020/lib/core/encrypt-credit-card/encrypt-credit-card.service.mjs +72 -0
  8. package/esm2020/lib/core/errors-mapping/xps-response-errors-mapping.service.mjs +52 -0
  9. package/esm2020/lib/core/exceptions-handling/elk/elk-logger.service.mjs +120 -0
  10. package/esm2020/lib/core/exceptions-handling/errors/http-error.class.mjs +40 -0
  11. package/esm2020/lib/core/exceptions-handling/errors/tagged-error.class.mjs +16 -0
  12. package/{esm2022 → esm2020}/lib/core/exceptions-handling/http-interceptor/http-exceptions.interceptor.mjs +5 -5
  13. package/esm2020/lib/core/http/secure-api/secure-api.service.mjs +55 -0
  14. package/{esm2022 → esm2020}/lib/core/legal/disclaimer.service.mjs +4 -4
  15. package/{esm2022 → esm2020}/lib/core/legal/legal.service.mjs +5 -5
  16. package/esm2020/lib/core/legal/refund-policy.service.mjs +30 -0
  17. package/esm2020/lib/core/legal/secure-connection.service.mjs +31 -0
  18. package/{esm2022 → esm2020}/lib/core/payment/actions/check-status/check-status.action.class.mjs +4 -4
  19. package/esm2020/lib/core/payment/actions/next-action.service.mjs +61 -0
  20. package/esm2020/lib/core/payment/actions/redirect/redirect.action.class.mjs +60 -0
  21. package/{esm2022 → esm2020}/lib/core/payment/actions/show-errors/show-errors.action.class.mjs +4 -4
  22. package/esm2020/lib/core/payment/actions/show-fields/show-fields.action.class.mjs +37 -0
  23. package/{esm2022 → esm2020}/lib/core/payment/actions/show-mobile-payment-screen/show-mobile-payment-screen.action.class.mjs +4 -4
  24. package/{esm2022 → esm2020}/lib/core/payment/actions/show-qr-code/show-qr-code.action.class.mjs +4 -4
  25. package/{esm2022 → esm2020}/lib/core/payment/actions/special-button/special-button.action.class.mjs +4 -4
  26. package/esm2020/lib/core/payment/actions/status-updated/status-updated.action.class.mjs +38 -0
  27. package/{esm2022 → esm2020}/lib/core/payment/actions/three-ds/three-ds.action.class.mjs +4 -4
  28. package/esm2020/lib/core/payment/config/config.service.mjs +37 -0
  29. package/{esm2022 → esm2020}/lib/core/payment/credit-card-state/credit-card-state.service.mjs +4 -4
  30. package/esm2020/lib/core/payment/finance-details/finance-details.service.mjs +38 -0
  31. package/{esm2022 → esm2020}/lib/core/payment/finance-details/status/status-finance-details-adapter.service.mjs +5 -5
  32. package/esm2020/lib/core/payment/finance-details/summary/summary-finance-details-adapter.service.mjs +264 -0
  33. package/esm2020/lib/core/payment/form/controls/control-config.service.mjs +46 -0
  34. package/{esm2022 → esm2020}/lib/core/payment/form/converters/birth-date/birth-date.converter.mjs +5 -5
  35. package/{esm2022 → esm2020}/lib/core/payment/form/converters/card-month/card-month.converter.mjs +5 -5
  36. package/{esm2022 → esm2020}/lib/core/payment/form/converters/card-number/card-number.converter.mjs +5 -5
  37. package/{esm2022 → esm2020}/lib/core/payment/form/converters/card-year/card-year.converter.mjs +5 -5
  38. package/{esm2022 → esm2020}/lib/core/payment/form/converters/cardholder-name/cardholder-name.converter.mjs +5 -5
  39. package/esm2020/lib/core/payment/form/converters/checkbox/checkbox.converter.mjs +33 -0
  40. package/esm2020/lib/core/payment/form/converters/converter.abstract.mjs +76 -0
  41. package/{esm2022 → esm2020}/lib/core/payment/form/converters/coupon/coupon.converter.mjs +5 -5
  42. package/{esm2022 → esm2020}/lib/core/payment/form/converters/cpf-name/cpf-name.converter.mjs +5 -5
  43. package/{esm2022 → esm2020}/lib/core/payment/form/converters/cpf-number/cpf-number.converter.mjs +5 -5
  44. package/esm2020/lib/core/payment/form/converters/cvv/cvv.converter.mjs +72 -0
  45. package/{esm2022 → esm2020}/lib/core/payment/form/converters/email/email.converter.mjs +5 -5
  46. package/{esm2022 → esm2020}/lib/core/payment/form/converters/phone.converter.mjs +5 -5
  47. package/{esm2022 → esm2020}/lib/core/payment/form/converters/pin/pin.converter.mjs +5 -5
  48. package/{esm2022 → esm2020}/lib/core/payment/form/converters/pricepoint/pricepoint.converter.mjs +5 -5
  49. package/{esm2022 → esm2020}/lib/core/payment/form/converters/radio-group/radio-group.converter.mjs +5 -5
  50. package/{esm2022 → esm2020}/lib/core/payment/form/converters/select/select.converter.mjs +5 -5
  51. package/esm2020/lib/core/payment/form/converters/street-number/street-number.converter.mjs +28 -0
  52. package/{esm2022 → esm2020}/lib/core/payment/form/converters/text/text.converter.mjs +5 -5
  53. package/esm2020/lib/core/payment/form/converters/zip/zip.converter.mjs +64 -0
  54. package/{esm2022 → esm2020}/lib/core/payment/form/form.module.mjs +33 -33
  55. package/esm2020/lib/core/payment/form/form.service.mjs +49 -0
  56. package/esm2020/lib/core/payment/form/validators/birth-date/birth-date.validator.mjs +37 -0
  57. package/esm2020/lib/core/payment/form/validators/card-month/card-month.validator.mjs +37 -0
  58. package/esm2020/lib/core/payment/form/validators/card-year/card-year.validator.mjs +34 -0
  59. package/esm2020/lib/core/payment/form/validators/convert.function.mjs +15 -0
  60. package/esm2020/lib/core/payment/form/validators/credit-card-length/credit-card-min-length.validator.mjs +32 -0
  61. package/esm2020/lib/core/payment/form/validators/luhn-formula-validator/luhn-formula.validator.mjs +40 -0
  62. package/{esm2022 → esm2020}/lib/core/payment/form/validators/validators.module.mjs +5 -5
  63. package/esm2020/lib/core/payment/form-messages/form-messages.service.mjs +23 -0
  64. package/esm2020/lib/core/payment/initialize/initialize.service.mjs +85 -0
  65. package/esm2020/lib/core/payment/initialize/response/initialize-response.class.mjs +43 -0
  66. package/esm2020/lib/core/payment/payment.service.mjs +369 -0
  67. package/{esm2022 → esm2020}/lib/core/payment/status/check-status/check-status.service.mjs +6 -6
  68. package/{esm2022 → esm2020}/lib/core/payment/status/check-status/request/check-status-request.class.mjs +1 -1
  69. package/esm2020/lib/core/payment/status/listen-status/listen-status.service.mjs +124 -0
  70. package/{esm2022 → esm2020}/lib/core/payment/status/save-payment-method-status/api/saved-payment-account-changes.service.mjs +5 -5
  71. package/esm2020/lib/core/payment/status/save-payment-method-status/save-payment-method-status.service.mjs +121 -0
  72. package/esm2020/lib/core/payment/status/status-request/request/status-request.class.mjs +22 -0
  73. package/esm2020/lib/core/payment/status/status-request/response/status-response.class.mjs +98 -0
  74. package/{esm2022 → esm2020}/lib/core/payment/status/status-request/status-request.service.mjs +6 -6
  75. package/esm2020/lib/core/payment/status/status.service.mjs +75 -0
  76. package/esm2020/lib/core/payment/status/websocket-status/websocket-status.service.mjs +76 -0
  77. package/esm2020/lib/core/payment/submit/request/submit-request.class.mjs +24 -0
  78. package/esm2020/lib/core/payment/submit/response/submit-response.class.mjs +31 -0
  79. package/esm2020/lib/core/payment/submit/submit.service.mjs +78 -0
  80. package/esm2020/lib/core/payment/sync/request/sync-request.class.mjs +31 -0
  81. package/esm2020/lib/core/payment/sync/response/sync-response.class.mjs +17 -0
  82. package/esm2020/lib/core/payment/sync/sync.service.mjs +157 -0
  83. package/esm2020/lib/core/payment/three-ds/api/notify-dfp-status/notify-dfp-status.service.mjs +49 -0
  84. package/esm2020/lib/core/payment/three-ds/api/status-three-ds/status-three-ds.service.mjs +60 -0
  85. package/esm2020/lib/core/payment/three-ds/dfp-collect/dfp-collect.service.mjs +105 -0
  86. package/esm2020/lib/core/payment/three-ds/reinsurance-check/reinsurance-check.service.mjs +41 -0
  87. package/esm2020/lib/core/payment/three-ds/three-ds-20/three-ds20.service.mjs +109 -0
  88. package/esm2020/lib/core/payment/three-ds/three-ds.service.mjs +42 -0
  89. package/esm2020/lib/core/payment/xps-api/xps-api.service.mjs +85 -0
  90. package/esm2020/lib/core/payment/xps-api-part-request.abstract.mjs +8 -0
  91. package/esm2020/lib/core/payment-methods/payment-methods.service.mjs +75 -0
  92. package/esm2020/lib/core/performance/performance.service.mjs +111 -0
  93. package/esm2020/lib/core/performance/xhr-action.service.mjs +114 -0
  94. package/esm2020/lib/core/saved-methods/saved-methods.service.mjs +54 -0
  95. package/esm2020/lib/core/sdk-payment-systems/apple-pay/apple-pay.service.mjs +268 -0
  96. package/esm2020/lib/core/sdk-payment-systems/google-pay/google-pay.service.mjs +177 -0
  97. package/esm2020/lib/core/sdk-payment-systems/payment-systems/payment-system-processing.service.mjs +84 -0
  98. package/esm2020/lib/core/session/session.service.mjs +57 -0
  99. package/esm2020/lib/core/settings/settings.service.mjs +92 -0
  100. package/esm2020/lib/core/url/url.service.mjs +34 -0
  101. package/esm2020/lib/core/user-agent/user-agent.service.mjs +211 -0
  102. package/esm2020/lib/core/user-balance/user-balance.service.mjs +53 -0
  103. package/esm2020/lib/core/user-behaviour-analytics/event-builder/event-builder.service.mjs +144 -0
  104. package/esm2020/lib/core/user-behaviour-analytics/user-behaviour-analytics.service.mjs +158 -0
  105. package/esm2020/lib/core/web-socket/centrifugo-web-socket.service.mjs +200 -0
  106. package/esm2020/lib/core/web-socket/nchan-web-socket.service.mjs +116 -0
  107. package/esm2020/lib/core/web-socket/web-socket.factory.mjs +28 -0
  108. package/esm2020/lib/core-library.module.mjs +92 -0
  109. package/{esm2022 → esm2020}/lib/core-library.service.mjs +5 -5
  110. package/{esm2022 → esm2020}/lib/shared/pipes/pipes.module.mjs +5 -5
  111. package/esm2020/lib/shared/pipes/unescape-html/unescape-html.pipe.mjs +23 -0
  112. package/fesm2015/xsolla-payment-client-core.mjs +8138 -0
  113. package/fesm2015/xsolla-payment-client-core.mjs.map +1 -0
  114. package/{fesm2022 → fesm2020}/xsolla-payment-client-core.mjs +460 -460
  115. package/fesm2020/xsolla-payment-client-core.mjs.map +1 -0
  116. package/package.json +16 -10
  117. package/xsolla-payment-client-core-0.2.21.tgz +0 -0
  118. package/esm2022/lib/core/device-finger-print/device-finger-print.service.mjs +0 -67
  119. package/esm2022/lib/core/encrypt-credit-card/encrypt-credit-card.service.mjs +0 -72
  120. package/esm2022/lib/core/errors-mapping/xps-response-errors-mapping.service.mjs +0 -52
  121. package/esm2022/lib/core/exceptions-handling/elk/elk-logger.service.mjs +0 -120
  122. package/esm2022/lib/core/exceptions-handling/errors/http-error.class.mjs +0 -40
  123. package/esm2022/lib/core/exceptions-handling/errors/tagged-error.class.mjs +0 -16
  124. package/esm2022/lib/core/http/secure-api/secure-api.service.mjs +0 -55
  125. package/esm2022/lib/core/legal/refund-policy.service.mjs +0 -30
  126. package/esm2022/lib/core/legal/secure-connection.service.mjs +0 -31
  127. package/esm2022/lib/core/payment/actions/next-action.service.mjs +0 -61
  128. package/esm2022/lib/core/payment/actions/redirect/redirect.action.class.mjs +0 -60
  129. package/esm2022/lib/core/payment/actions/show-fields/show-fields.action.class.mjs +0 -34
  130. package/esm2022/lib/core/payment/actions/status-updated/status-updated.action.class.mjs +0 -38
  131. package/esm2022/lib/core/payment/config/config.service.mjs +0 -37
  132. package/esm2022/lib/core/payment/finance-details/finance-details.service.mjs +0 -38
  133. package/esm2022/lib/core/payment/finance-details/summary/summary-finance-details-adapter.service.mjs +0 -264
  134. package/esm2022/lib/core/payment/form/controls/control-config.service.mjs +0 -46
  135. package/esm2022/lib/core/payment/form/converters/checkbox/checkbox.converter.mjs +0 -33
  136. package/esm2022/lib/core/payment/form/converters/converter.abstract.mjs +0 -76
  137. package/esm2022/lib/core/payment/form/converters/cvv/cvv.converter.mjs +0 -72
  138. package/esm2022/lib/core/payment/form/converters/street-number/street-number.converter.mjs +0 -28
  139. package/esm2022/lib/core/payment/form/converters/zip/zip.converter.mjs +0 -64
  140. package/esm2022/lib/core/payment/form/form.service.mjs +0 -49
  141. package/esm2022/lib/core/payment/form/validators/birth-date/birth-date.validator.mjs +0 -37
  142. package/esm2022/lib/core/payment/form/validators/card-month/card-month.validator.mjs +0 -37
  143. package/esm2022/lib/core/payment/form/validators/card-year/card-year.validator.mjs +0 -34
  144. package/esm2022/lib/core/payment/form/validators/convert.function.mjs +0 -15
  145. package/esm2022/lib/core/payment/form/validators/credit-card-length/credit-card-min-length.validator.mjs +0 -32
  146. package/esm2022/lib/core/payment/form/validators/luhn-formula-validator/luhn-formula.validator.mjs +0 -40
  147. package/esm2022/lib/core/payment/form-messages/form-messages.service.mjs +0 -26
  148. package/esm2022/lib/core/payment/initialize/initialize.service.mjs +0 -85
  149. package/esm2022/lib/core/payment/initialize/response/initialize-response.class.mjs +0 -43
  150. package/esm2022/lib/core/payment/payment.service.mjs +0 -369
  151. package/esm2022/lib/core/payment/status/listen-status/listen-status.service.mjs +0 -124
  152. package/esm2022/lib/core/payment/status/save-payment-method-status/save-payment-method-status.service.mjs +0 -121
  153. package/esm2022/lib/core/payment/status/status-request/request/status-request.class.mjs +0 -22
  154. package/esm2022/lib/core/payment/status/status-request/response/status-response.class.mjs +0 -98
  155. package/esm2022/lib/core/payment/status/status.service.mjs +0 -75
  156. package/esm2022/lib/core/payment/status/websocket-status/websocket-status.service.mjs +0 -76
  157. package/esm2022/lib/core/payment/submit/request/submit-request.class.mjs +0 -24
  158. package/esm2022/lib/core/payment/submit/response/submit-response.class.mjs +0 -31
  159. package/esm2022/lib/core/payment/submit/submit.service.mjs +0 -78
  160. package/esm2022/lib/core/payment/sync/request/sync-request.class.mjs +0 -31
  161. package/esm2022/lib/core/payment/sync/response/sync-response.class.mjs +0 -17
  162. package/esm2022/lib/core/payment/sync/sync.service.mjs +0 -157
  163. package/esm2022/lib/core/payment/three-ds/api/notify-dfp-status/notify-dfp-status.service.mjs +0 -49
  164. package/esm2022/lib/core/payment/three-ds/api/status-three-ds/status-three-ds.service.mjs +0 -60
  165. package/esm2022/lib/core/payment/three-ds/dfp-collect/dfp-collect.service.mjs +0 -105
  166. package/esm2022/lib/core/payment/three-ds/reinsurance-check/reinsurance-check.service.mjs +0 -41
  167. package/esm2022/lib/core/payment/three-ds/three-ds-20/three-ds20.service.mjs +0 -109
  168. package/esm2022/lib/core/payment/three-ds/three-ds.service.mjs +0 -42
  169. package/esm2022/lib/core/payment/xps-api/xps-api.service.mjs +0 -85
  170. package/esm2022/lib/core/payment/xps-api-part-request.abstract.mjs +0 -8
  171. package/esm2022/lib/core/payment-methods/payment-methods.service.mjs +0 -75
  172. package/esm2022/lib/core/performance/performance.service.mjs +0 -111
  173. package/esm2022/lib/core/performance/xhr-action.service.mjs +0 -114
  174. package/esm2022/lib/core/saved-methods/saved-methods.service.mjs +0 -54
  175. package/esm2022/lib/core/sdk-payment-systems/apple-pay/apple-pay.service.mjs +0 -268
  176. package/esm2022/lib/core/sdk-payment-systems/google-pay/google-pay.service.mjs +0 -177
  177. package/esm2022/lib/core/sdk-payment-systems/payment-systems/payment-system-processing.service.mjs +0 -84
  178. package/esm2022/lib/core/session/session.service.mjs +0 -57
  179. package/esm2022/lib/core/settings/settings.service.mjs +0 -92
  180. package/esm2022/lib/core/url/url.service.mjs +0 -34
  181. package/esm2022/lib/core/user-agent/user-agent.service.mjs +0 -211
  182. package/esm2022/lib/core/user-balance/user-balance.service.mjs +0 -53
  183. package/esm2022/lib/core/user-behaviour-analytics/event-builder/event-builder.service.mjs +0 -144
  184. package/esm2022/lib/core/user-behaviour-analytics/user-behaviour-analytics.service.mjs +0 -158
  185. package/esm2022/lib/core/web-socket/centrifugo-web-socket.service.mjs +0 -200
  186. package/esm2022/lib/core/web-socket/nchan-web-socket.service.mjs +0 -116
  187. package/esm2022/lib/core/web-socket/web-socket.factory.mjs +0 -28
  188. package/esm2022/lib/core-library.module.mjs +0 -92
  189. package/esm2022/lib/shared/pipes/unescape-html/unescape-html.pipe.mjs +0 -23
  190. package/fesm2022/xsolla-payment-client-core.mjs.map +0 -1
  191. package/xsolla-payment-client-core-0.2.20.tgz +0 -0
  192. /package/{esm2022 → esm2020}/lib/core/agreementsGroup.const.mjs +0 -0
  193. /package/{esm2022 → esm2020}/lib/core/boolean-number.enum.mjs +0 -0
  194. /package/{esm2022 → esm2020}/lib/core/combined-payment-methods/combined-payment-methods.interface.mjs +0 -0
  195. /package/{esm2022 → esm2020}/lib/core/countries-api/country-response.interface.mjs +0 -0
  196. /package/{esm2022 → esm2020}/lib/core/countries-api/country.interface.mjs +0 -0
  197. /package/{esm2022 → esm2020}/lib/core/country/country-iso-code.enum.mjs +0 -0
  198. /package/{esm2022 → esm2020}/lib/core/credit-card/credit-card-settings.interface.mjs +0 -0
  199. /package/{esm2022 → esm2020}/lib/core/credit-card/credit-card-types.enum.mjs +0 -0
  200. /package/{esm2022 → esm2020}/lib/core/credit-card/credit-card.interface.mjs +0 -0
  201. /package/{esm2022 → esm2020}/lib/core/credit-card/credit-cards-map.const.mjs +0 -0
  202. /package/{esm2022 → esm2020}/lib/core/credit-card/default-mask.const.mjs +0 -0
  203. /package/{esm2022 → esm2020}/lib/core/credit-card/four-block-mask.const.mjs +0 -0
  204. /package/{esm2022 → esm2020}/lib/core/credit-card/ordered-cards-settings.const.mjs +0 -0
  205. /package/{esm2022 → esm2020}/lib/core/credit-card/types/american-express.mjs +0 -0
  206. /package/{esm2022 → esm2020}/lib/core/credit-card/types/aura.mjs +0 -0
  207. /package/{esm2022 → esm2020}/lib/core/credit-card/types/china-union-pay.mjs +0 -0
  208. /package/{esm2022 → esm2020}/lib/core/credit-card/types/dankort.mjs +0 -0
  209. /package/{esm2022 → esm2020}/lib/core/credit-card/types/default-card.mjs +0 -0
  210. /package/{esm2022 → esm2020}/lib/core/credit-card/types/diners-clubs.mjs +0 -0
  211. /package/{esm2022 → esm2020}/lib/core/credit-card/types/discover.mjs +0 -0
  212. /package/{esm2022 → esm2020}/lib/core/credit-card/types/elo.mjs +0 -0
  213. /package/{esm2022 → esm2020}/lib/core/credit-card/types/hipercard.mjs +0 -0
  214. /package/{esm2022 → esm2020}/lib/core/credit-card/types/jcb.mjs +0 -0
  215. /package/{esm2022 → esm2020}/lib/core/credit-card/types/maestro.mjs +0 -0
  216. /package/{esm2022 → esm2020}/lib/core/credit-card/types/mastercard.mjs +0 -0
  217. /package/{esm2022 → esm2020}/lib/core/credit-card/types/mir.mjs +0 -0
  218. /package/{esm2022 → esm2020}/lib/core/credit-card/types/naranja.mjs +0 -0
  219. /package/{esm2022 → esm2020}/lib/core/credit-card/types/postepay.mjs +0 -0
  220. /package/{esm2022 → esm2020}/lib/core/credit-card/types/visa.mjs +0 -0
  221. /package/{esm2022 → esm2020}/lib/core/deep-readonly.type.mjs +0 -0
  222. /package/{esm2022 → esm2020}/lib/core/device-finger-print/hash.type.mjs +0 -0
  223. /package/{esm2022 → esm2020}/lib/core/edit-saved-methods/delete-method-response.interface.mjs +0 -0
  224. /package/{esm2022 → esm2020}/lib/core/encrypt-credit-card/encrypted-card.interface.mjs +0 -0
  225. /package/{esm2022 → esm2020}/lib/core/encrypt-credit-card/open-card.interface.mjs +0 -0
  226. /package/{esm2022 → esm2020}/lib/core/errors-mapping/card-number-sanction-error-codes.const.mjs +0 -0
  227. /package/{esm2022 → esm2020}/lib/core/errors-mapping/field-special-errors-map.const.mjs +0 -0
  228. /package/{esm2022 → esm2020}/lib/core/exceptions-handling/elk/additional-info.interface.mjs +0 -0
  229. /package/{esm2022 → esm2020}/lib/core/exceptions-handling/elk/error-without-meta-fields.interface.mjs +0 -0
  230. /package/{esm2022 → esm2020}/lib/core/exceptions-handling/elk/log-message.interface.mjs +0 -0
  231. /package/{esm2022 → esm2020}/lib/core/exceptions-handling/errors/api-error.interface.mjs +0 -0
  232. /package/{esm2022 → esm2020}/lib/core/exceptions-handling/errors/app-error.class.mjs +0 -0
  233. /package/{esm2022 → esm2020}/lib/core/exceptions-handling/errors/elk-error-types.enum.mjs +0 -0
  234. /package/{esm2022 → esm2020}/lib/core/exceptions-handling/errors/encrypt-card-error.mjs +0 -0
  235. /package/{esm2022 → esm2020}/lib/core/exceptions-handling/errors/response-error.class.mjs +0 -0
  236. /package/{esm2022 → esm2020}/lib/core/exceptions-handling/errors/terminal-error.class.mjs +0 -0
  237. /package/{esm2022 → esm2020}/lib/core/exceptions-handling/errors/token-error.class.mjs +0 -0
  238. /package/{esm2022 → esm2020}/lib/core/exceptions-handling/errors/ws-error.class.mjs +0 -0
  239. /package/{esm2022 → esm2020}/lib/core/exceptions-handling/http-interceptor/http-error-data.interface.mjs +0 -0
  240. /package/{esm2022 → esm2020}/lib/core/exceptions-handling/http-interceptor/http-error-response-data.interface.mjs +0 -0
  241. /package/{esm2022 → esm2020}/lib/core/extended-window.interface.mjs +0 -0
  242. /package/{esm2022 → esm2020}/lib/core/http/secure-api/api-url.const.mjs +0 -0
  243. /package/{esm2022 → esm2020}/lib/core/http/secure-api/options.interface.mjs +0 -0
  244. /package/{esm2022 → esm2020}/lib/core/legal/legal.component.config.mjs +0 -0
  245. /package/{esm2022 → esm2020}/lib/core/payment/actions/action.interface.mjs +0 -0
  246. /package/{esm2022 → esm2020}/lib/core/payment/actions/check-status/check-status.action.type.mjs +0 -0
  247. /package/{esm2022 → esm2020}/lib/core/payment/actions/next-action.interface.mjs +0 -0
  248. /package/{esm2022 → esm2020}/lib/core/payment/actions/next-actions.mjs +0 -0
  249. /package/{esm2022 → esm2020}/lib/core/payment/actions/redirect/pay-station4-url.const.mjs +0 -0
  250. /package/{esm2022 → esm2020}/lib/core/payment/actions/redirect/ps4-pages/pages-payment-methods-id.const.mjs +0 -0
  251. /package/{esm2022 → esm2020}/lib/core/payment/actions/redirect/ps4-pages/pages-routes.const.mjs +0 -0
  252. /package/{esm2022 → esm2020}/lib/core/payment/actions/redirect/redirect.action.type.mjs +0 -0
  253. /package/{esm2022 → esm2020}/lib/core/payment/actions/show-errors/show-errors.action.type.mjs +0 -0
  254. /package/{esm2022 → esm2020}/lib/core/payment/actions/show-fields/show-fields.action.type.mjs +0 -0
  255. /package/{esm2022 → esm2020}/lib/core/payment/actions/show-mobile-payment-screen/show-mobile-payment-screen.action.type.mjs +0 -0
  256. /package/{esm2022 → esm2020}/lib/core/payment/actions/show-qr-code/show-qr-code.action.type.mjs +0 -0
  257. /package/{esm2022 → esm2020}/lib/core/payment/actions/special-button/special-button.action.type.mjs +0 -0
  258. /package/{esm2022 → esm2020}/lib/core/payment/actions/status-updated/status-updated.action.type.mjs +0 -0
  259. /package/{esm2022 → esm2020}/lib/core/payment/actions/three-ds/three-ds.action.type.mjs +0 -0
  260. /package/{esm2022 → esm2020}/lib/core/payment/checkout-item.interface.mjs +0 -0
  261. /package/{esm2022 → esm2020}/lib/core/payment/credit-card-payment-methods-id.variable.mjs +0 -0
  262. /package/{esm2022 → esm2020}/lib/core/payment/credit-card-state/credit-card-state.interface.mjs +0 -0
  263. /package/{esm2022 → esm2020}/lib/core/payment/emit-data.service.abstract.mjs +0 -0
  264. /package/{esm2022 → esm2020}/lib/core/payment/field-names.enum.mjs +0 -0
  265. /package/{esm2022 → esm2020}/lib/core/payment/field.interface.mjs +0 -0
  266. /package/{esm2022 → esm2020}/lib/core/payment/finance-details/cart-item.interface.mjs +0 -0
  267. /package/{esm2022 → esm2020}/lib/core/payment/finance-details/cart-line.interface.mjs +0 -0
  268. /package/{esm2022 → esm2020}/lib/core/payment/finance-details/cart-summary.interface.mjs +0 -0
  269. /package/{esm2022 → esm2020}/lib/core/payment/finance-details/finance-details.interface.mjs +0 -0
  270. /package/{esm2022 → esm2020}/lib/core/payment/finance-details/price.helpers.mjs +0 -0
  271. /package/{esm2022 → esm2020}/lib/core/payment/finance-details/price.interface.mjs +0 -0
  272. /package/{esm2022 → esm2020}/lib/core/payment/finance-details/status/field-with-amount-and-currency.interface.mjs +0 -0
  273. /package/{esm2022 → esm2020}/lib/core/payment/finance-details/status/fields-with-currency.mjs +0 -0
  274. /package/{esm2022 → esm2020}/lib/core/payment/finance-details/status/finance-info.interface.mjs +0 -0
  275. /package/{esm2022 → esm2020}/lib/core/payment/finance-details/summary/default-image-patterns.const.mjs +0 -0
  276. /package/{esm2022 → esm2020}/lib/core/payment/finance-details/summary/sales-tax-details-key.enum.mjs +0 -0
  277. /package/{esm2022 → esm2020}/lib/core/payment/finance-details/vat-details-key.enum.mjs +0 -0
  278. /package/{esm2022 → esm2020}/lib/core/payment/form/common-control-config.interface.mjs +0 -0
  279. /package/{esm2022 → esm2020}/lib/core/payment/form/control-status.interface.mjs +0 -0
  280. /package/{esm2022 → esm2020}/lib/core/payment/form/controls/card-number/card-number-control.config.mjs +0 -0
  281. /package/{esm2022 → esm2020}/lib/core/payment/form/controls/checkbox/checkbox-control.config.mjs +0 -0
  282. /package/{esm2022 → esm2020}/lib/core/payment/form/controls/control-config.mjs +0 -0
  283. /package/{esm2022 → esm2020}/lib/core/payment/form/controls/control-type.type.mjs +0 -0
  284. /package/{esm2022 → esm2020}/lib/core/payment/form/controls/coupon/coupon-control.config.mjs +0 -0
  285. /package/{esm2022 → esm2020}/lib/core/payment/form/controls/phone-control.config.mjs +0 -0
  286. /package/{esm2022 → esm2020}/lib/core/payment/form/controls/radio-control/radio-control.config.mjs +0 -0
  287. /package/{esm2022 → esm2020}/lib/core/payment/form/controls/radio-control/radio-option.interface.mjs +0 -0
  288. /package/{esm2022 → esm2020}/lib/core/payment/form/controls/search-select/search-select-option.interface.mjs +0 -0
  289. /package/{esm2022 → esm2020}/lib/core/payment/form/controls/search-select/select-control.config.mjs +0 -0
  290. /package/{esm2022 → esm2020}/lib/core/payment/form/controls/search-select/select-option.interface.mjs +0 -0
  291. /package/{esm2022 → esm2020}/lib/core/payment/form/controls/text-control.config.mjs +0 -0
  292. /package/{esm2022 → esm2020}/lib/core/payment/form/converters/converters-map.interface.mjs +0 -0
  293. /package/{esm2022 → esm2020}/lib/core/payment/form/converters/converters-map.mjs +0 -0
  294. /package/{esm2022 → esm2020}/lib/core/payment/form/converters/cpf-name/cpf-name-regex.variable.mjs +0 -0
  295. /package/{esm2022 → esm2020}/lib/core/payment/form/converters/cvv/cvv-form-state.interface.mjs +0 -0
  296. /package/{esm2022 → esm2020}/lib/core/payment/form/converters/street-number/street-number-from-state.interface.mjs +0 -0
  297. /package/{esm2022 → esm2020}/lib/core/payment/form/field-form-states.interface.mjs +0 -0
  298. /package/{esm2022 → esm2020}/lib/core/payment/form/field-status.interface.mjs +0 -0
  299. /package/{esm2022 → esm2020}/lib/core/payment/form/form-fields-status.interface.mjs +0 -0
  300. /package/{esm2022 → esm2020}/lib/core/payment/form/form-state.interface.mjs +0 -0
  301. /package/{esm2022 → esm2020}/lib/core/payment/form/input-event.enum.mjs +0 -0
  302. /package/{esm2022 → esm2020}/lib/core/payment/form/validators/async-validator-fn.type.mjs +0 -0
  303. /package/{esm2022 → esm2020}/lib/core/payment/form/validators/coupon/coupon-validator.mjs +0 -0
  304. /package/{esm2022 → esm2020}/lib/core/payment/form/validators/email/email-validator.mjs +0 -0
  305. /package/{esm2022 → esm2020}/lib/core/payment/form/validators/is-empty-input-value.function.mjs +0 -0
  306. /package/{esm2022 → esm2020}/lib/core/payment/form/validators/max-length-validator.mjs +0 -0
  307. /package/{esm2022 → esm2020}/lib/core/payment/form/validators/min-length-validator.mjs +0 -0
  308. /package/{esm2022 → esm2020}/lib/core/payment/form/validators/phone-validator.mjs +0 -0
  309. /package/{esm2022 → esm2020}/lib/core/payment/form/validators/required/required.validator.mjs +0 -0
  310. /package/{esm2022 → esm2020}/lib/core/payment/form/validators/restricted-value/restricted-value.validator.mjs +0 -0
  311. /package/{esm2022 → esm2020}/lib/core/payment/form/validators/validation-error.interface.mjs +0 -0
  312. /package/{esm2022 → esm2020}/lib/core/payment/form/validators/validation-errors.interface.mjs +0 -0
  313. /package/{esm2022 → esm2020}/lib/core/payment/form/validators/validator-fn.type.mjs +0 -0
  314. /package/{esm2022 → esm2020}/lib/core/payment/form-response.interface.mjs +0 -0
  315. /package/{esm2022 → esm2020}/lib/core/payment/initialize/initialize-request-params.interface.mjs +0 -0
  316. /package/{esm2022 → esm2020}/lib/core/payment/initialize/response/initialize-response.token.mjs +0 -0
  317. /package/{esm2022 → esm2020}/lib/core/payment/invoice.interface.mjs +0 -0
  318. /package/{esm2022 → esm2020}/lib/core/payment/payment-config.interface.mjs +0 -0
  319. /package/{esm2022 → esm2020}/lib/core/payment/payment-form.interface.mjs +0 -0
  320. /package/{esm2022 → esm2020}/lib/core/payment/payment.interface.mjs +0 -0
  321. /package/{esm2022 → esm2020}/lib/core/payment/status/check-status/request/check-status-request.token.mjs +0 -0
  322. /package/{esm2022 → esm2020}/lib/core/payment/status/check-status/response/check-status-response.class.mjs +0 -0
  323. /package/{esm2022 → esm2020}/lib/core/payment/status/check-status/response/check-status-response.token.mjs +0 -0
  324. /package/{esm2022 → esm2020}/lib/core/payment/status/finance-info-field.interface.mjs +0 -0
  325. /package/{esm2022 → esm2020}/lib/core/payment/status/line-item.interface.mjs +0 -0
  326. /package/{esm2022 → esm2020}/lib/core/payment/status/save-payment-method-status/api/saved-payment-account-changes.interface.mjs +0 -0
  327. /package/{esm2022 → esm2020}/lib/core/payment/status/save-payment-method-status/api/saved-payment-account.interface.mjs +0 -0
  328. /package/{esm2022 → esm2020}/lib/core/payment/status/save-payment-method-status/save-payment-method-status.enum.mjs +0 -0
  329. /package/{esm2022 → esm2020}/lib/core/payment/status/status-finance-info.interface.mjs +0 -0
  330. /package/{esm2022 → esm2020}/lib/core/payment/status/status-groups.mjs +0 -0
  331. /package/{esm2022 → esm2020}/lib/core/payment/status/status-order.interface.mjs +0 -0
  332. /package/{esm2022 → esm2020}/lib/core/payment/status/status-request/request/status-request.token.mjs +0 -0
  333. /package/{esm2022 → esm2020}/lib/core/payment/status/status-request/required-status-search-params.const.mjs +0 -0
  334. /package/{esm2022 → esm2020}/lib/core/payment/status/status-request/response/status-response.token.mjs +0 -0
  335. /package/{esm2022 → esm2020}/lib/core/payment/status/status-request/status-request-params.interface.mjs +0 -0
  336. /package/{esm2022 → esm2020}/lib/core/payment/status/status-request/status-search-param.enum.mjs +0 -0
  337. /package/{esm2022 → esm2020}/lib/core/payment/status/status-request/status-search-params.map.mjs +0 -0
  338. /package/{esm2022 → esm2020}/lib/core/payment/status/status-settings.interface.mjs +0 -0
  339. /package/{esm2022 → esm2020}/lib/core/payment/status/status-updated.interface.mjs +0 -0
  340. /package/{esm2022 → esm2020}/lib/core/payment/status/status.enum.mjs +0 -0
  341. /package/{esm2022 → esm2020}/lib/core/payment/status/status.interface.mjs +0 -0
  342. /package/{esm2022 → esm2020}/lib/core/payment/status/title-class.enum.mjs +0 -0
  343. /package/{esm2022 → esm2020}/lib/core/payment/status/web-socket-client-type.enum.mjs +0 -0
  344. /package/{esm2022 → esm2020}/lib/core/payment/status/websocket-status/websocket-status.enum.mjs +0 -0
  345. /package/{esm2022 → esm2020}/lib/core/payment/submit/request/submit-request.token.mjs +0 -0
  346. /package/{esm2022 → esm2020}/lib/core/payment/submit/response/is-submit-response.function.mjs +0 -0
  347. /package/{esm2022 → esm2020}/lib/core/payment/submit/response/submit-response.token.mjs +0 -0
  348. /package/{esm2022 → esm2020}/lib/core/payment/sync/field-async-validation.interface.mjs +0 -0
  349. /package/{esm2022 → esm2020}/lib/core/payment/sync/field-sync-state.interface.mjs +0 -0
  350. /package/{esm2022 → esm2020}/lib/core/payment/sync/request/sync-request.token.mjs +0 -0
  351. /package/{esm2022 → esm2020}/lib/core/payment/sync/response/sync-response.token.mjs +0 -0
  352. /package/{esm2022 → esm2020}/lib/core/payment/three-ds/api/notify-dfp-status/request/notify-dfp-status-request.class.mjs +0 -0
  353. /package/{esm2022 → esm2020}/lib/core/payment/three-ds/api/notify-dfp-status/request/notify-dfp-status-request.token.mjs +0 -0
  354. /package/{esm2022 → esm2020}/lib/core/payment/three-ds/api/status-three-ds/request/status-three-ds-request.class.mjs +0 -0
  355. /package/{esm2022 → esm2020}/lib/core/payment/three-ds/api/status-three-ds/request/status-three-ds-request.token.mjs +0 -0
  356. /package/{esm2022 → esm2020}/lib/core/payment/three-ds/api/status-three-ds/response/status-three-ds-response.class.mjs +0 -0
  357. /package/{esm2022 → esm2020}/lib/core/payment/three-ds/api/status-three-ds/response/status-three-ds-response.token.mjs +0 -0
  358. /package/{esm2022 → esm2020}/lib/core/payment/three-ds/api/status-three-ds/status-three-ds-response.interface.mjs +0 -0
  359. /package/{esm2022 → esm2020}/lib/core/payment/three-ds/api/status-three-ds/status-types.enum.mjs +0 -0
  360. /package/{esm2022 → esm2020}/lib/core/payment/three-ds/api/status-three-ds/three-ds-checkout-form.interface.mjs +0 -0
  361. /package/{esm2022 → esm2020}/lib/core/payment/three-ds/reinsurance-check/timer.interface.mjs +0 -0
  362. /package/{esm2022 → esm2020}/lib/core/payment/three-ds/three-ds-20/status-update.interface.mjs +0 -0
  363. /package/{esm2022 → esm2020}/lib/core/payment/three-ds/three-ds-form.interface.mjs +0 -0
  364. /package/{esm2022 → esm2020}/lib/core/payment/three-ds/three-ds-status-websocket-types.enum.mjs +0 -0
  365. /package/{esm2022 → esm2020}/lib/core/payment/virtual-currency.interface.mjs +0 -0
  366. /package/{esm2022 → esm2020}/lib/core/payment/xps-api-part.abstract.mjs +0 -0
  367. /package/{esm2022 → esm2020}/lib/core/payment/xps-checkout.mjs +0 -0
  368. /package/{esm2022 → esm2020}/lib/core/payment/xps-comand.enum.mjs +0 -0
  369. /package/{esm2022 → esm2020}/lib/core/payment/xps-error.interface.mjs +0 -0
  370. /package/{esm2022 → esm2020}/lib/core/payment/xps-finance.interface.mjs +0 -0
  371. /package/{esm2022 → esm2020}/lib/core/payment/xps-message.interface.mjs +0 -0
  372. /package/{esm2022 → esm2020}/lib/core/payment/xps-purchase.interface.mjs +0 -0
  373. /package/{esm2022 → esm2020}/lib/core/payment/xps-request-params.interface.mjs +0 -0
  374. /package/{esm2022 → esm2020}/lib/core/payment/xps-request.interface.mjs +0 -0
  375. /package/{esm2022 → esm2020}/lib/core/payment/xps-response.error.mjs +0 -0
  376. /package/{esm2022 → esm2020}/lib/core/payment/xps-response.interface.mjs +0 -0
  377. /package/{esm2022 → esm2020}/lib/core/payment/xps-summary.interface.mjs +0 -0
  378. /package/{esm2022 → esm2020}/lib/core/payment-methods/payment-method-api.interface.mjs +0 -0
  379. /package/{esm2022 → esm2020}/lib/core/payment-methods/payment-method.interface.mjs +0 -0
  380. /package/{esm2022 → esm2020}/lib/core/payment-methods/payment-methods-api.interface.mjs +0 -0
  381. /package/{esm2022 → esm2020}/lib/core/payment-methods/payment-methods-request-params.interface.mjs +0 -0
  382. /package/{esm2022 → esm2020}/lib/core/payment-methods/payment-methods-response.class.mjs +0 -0
  383. /package/{esm2022 → esm2020}/lib/core/payment-methods/payment-methods-response.interface.mjs +0 -0
  384. /package/{esm2022 → esm2020}/lib/core/payment-methods/payment-methods-response.token.mjs +0 -0
  385. /package/{esm2022 → esm2020}/lib/core/performance/xhr-action.interface.mjs +0 -0
  386. /package/{esm2022 → esm2020}/lib/core/properties.type.mjs +0 -0
  387. /package/{esm2022 → esm2020}/lib/core/saved-methods/saved-method-api.interface.mjs +0 -0
  388. /package/{esm2022 → esm2020}/lib/core/saved-methods/saved-method.interface.mjs +0 -0
  389. /package/{esm2022 → esm2020}/lib/core/saved-methods/saved-methods-request-params.interface.mjs +0 -0
  390. /package/{esm2022 → esm2020}/lib/core/saved-methods/saved-methods-response.class.mjs +0 -0
  391. /package/{esm2022 → esm2020}/lib/core/saved-methods/saved-methods-response.interface.mjs +0 -0
  392. /package/{esm2022 → esm2020}/lib/core/saved-methods/saved-methods-response.token.mjs +0 -0
  393. /package/{esm2022 → esm2020}/lib/core/sdk-payment-systems/apple-pay/apple-pay-integration.type.mjs +0 -0
  394. /package/{esm2022 → esm2020}/lib/core/sdk-payment-systems/apple-pay/apple-pay-params.interface.mjs +0 -0
  395. /package/{esm2022 → esm2020}/lib/core/sdk-payment-systems/apple-pay/apple-pay.const.mjs +0 -0
  396. /package/{esm2022 → esm2020}/lib/core/sdk-payment-systems/apple-pay/apple-pay.errors.enum.mjs +0 -0
  397. /package/{esm2022 → esm2020}/lib/core/sdk-payment-systems/apple-pay/checkout-params.interface.mjs +0 -0
  398. /package/{esm2022 → esm2020}/lib/core/sdk-payment-systems/google-pay/google-pay-button-color.type.mjs +0 -0
  399. /package/{esm2022 → esm2020}/lib/core/sdk-payment-systems/google-pay/google-pay-checkout.interface.mjs +0 -0
  400. /package/{esm2022 → esm2020}/lib/core/sdk-payment-systems/google-pay/google-pay-init-params.interface.mjs +0 -0
  401. /package/{esm2022 → esm2020}/lib/core/sdk-payment-systems/google-pay/google-pay-library.interface.mjs +0 -0
  402. /package/{esm2022 → esm2020}/lib/core/sdk-payment-systems/sdk-payment-methods.const.mjs +0 -0
  403. /package/{esm2022 → esm2020}/lib/core/sdk-payment-systems/sdk-payment-systems-initial-data.interface.mjs +0 -0
  404. /package/{esm2022 → esm2020}/lib/core/sdk-payment-systems/sdk-payment-systems.interface.mjs +0 -0
  405. /package/{esm2022 → esm2020}/lib/core/settings/auto-redirect-on-status.mjs +0 -0
  406. /package/{esm2022 → esm2020}/lib/core/settings/balance.interface.mjs +0 -0
  407. /package/{esm2022 → esm2020}/lib/core/settings/bonus.interface.mjs +0 -0
  408. /package/{esm2022 → esm2020}/lib/core/settings/configuration.interface.mjs +0 -0
  409. /package/{esm2022 → esm2020}/lib/core/settings/empty-utils-response.error.mjs +0 -0
  410. /package/{esm2022 → esm2020}/lib/core/settings/header-type.enum.mjs +0 -0
  411. /package/{esm2022 → esm2020}/lib/core/settings/offer.interface.mjs +0 -0
  412. /package/{esm2022 → esm2020}/lib/core/settings/project.interface.mjs +0 -0
  413. /package/{esm2022 → esm2020}/lib/core/settings/purchase.interface.mjs +0 -0
  414. /package/{esm2022 → esm2020}/lib/core/settings/settings-mode.enum.mjs +0 -0
  415. /package/{esm2022 → esm2020}/lib/core/settings/settings.interface.mjs +0 -0
  416. /package/{esm2022 → esm2020}/lib/core/settings/status-back-show.mjs +0 -0
  417. /package/{esm2022 → esm2020}/lib/core/settings/tracking-info.interface.mjs +0 -0
  418. /package/{esm2022 → esm2020}/lib/core/settings/user.interface.mjs +0 -0
  419. /package/{esm2022 → esm2020}/lib/core/settings/utils-response.interface.mjs +0 -0
  420. /package/{esm2022 → esm2020}/lib/core/type-guards/is-null.function.mjs +0 -0
  421. /package/{esm2022 → esm2020}/lib/core/type-guards/is-string.function.mjs +0 -0
  422. /package/{esm2022 → esm2020}/lib/core/type-guards/is-undefined.function.mjs +0 -0
  423. /package/{esm2022 → esm2020}/lib/core/url/search-params.interface.mjs +0 -0
  424. /package/{esm2022 → esm2020}/lib/core/user-agent/browserInfo.interface.mjs +0 -0
  425. /package/{esm2022 → esm2020}/lib/core/user-agent/browsers.mjs +0 -0
  426. /package/{esm2022 → esm2020}/lib/core/user-agent/device.enum.mjs +0 -0
  427. /package/{esm2022 → esm2020}/lib/core/user-agent/os.mjs +0 -0
  428. /package/{esm2022 → esm2020}/lib/core/user-agent/user-agent-data.interface.mjs +0 -0
  429. /package/{esm2022 → esm2020}/lib/core/user-balance/user-balance-api.interface.mjs +0 -0
  430. /package/{esm2022 → esm2020}/lib/core/user-balance/user-balance-request-params.interface.mjs +0 -0
  431. /package/{esm2022 → esm2020}/lib/core/user-balance/user-balance-response.class.mjs +0 -0
  432. /package/{esm2022 → esm2020}/lib/core/user-balance/user-balance-response.token.mjs +0 -0
  433. /package/{esm2022 → esm2020}/lib/core/user-behaviour-analytics/event-builder/event-parameter-types.mjs +0 -0
  434. /package/{esm2022 → esm2020}/lib/core/user-behaviour-analytics/event-builder/invoice.interface.mjs +0 -0
  435. /package/{esm2022 → esm2020}/lib/core/user-behaviour-analytics/event-builder/purchase.type.mjs +0 -0
  436. /package/{esm2022 → esm2020}/lib/core/user-behaviour-analytics/event-builder/user-behaviour-event.interface.mjs +0 -0
  437. /package/{esm2022 → esm2020}/lib/core/user-behaviour-analytics/one-time-analytics-events.const.mjs +0 -0
  438. /package/{esm2022 → esm2020}/lib/core/user-behaviour-analytics/user-behaviour-analytics.interface.mjs +0 -0
  439. /package/{esm2022 → esm2020}/lib/core/user-behaviour-analytics/user-behaviour-event/user-behaviour-event-categories.mjs +0 -0
  440. /package/{esm2022 → esm2020}/lib/core/user-behaviour-analytics/user-behaviour-event/user-behaviour-event-types.mjs +0 -0
  441. /package/{esm2022 → esm2020}/lib/core/user-behaviour-analytics/user-behaviour-event-name.enum.mjs +0 -0
  442. /package/{esm2022 → esm2020}/lib/core/user-behaviour-analytics/user-session-options.mjs +0 -0
  443. /package/{esm2022 → esm2020}/lib/core/web-socket/web-socket-client-type.enum.mjs +0 -0
  444. /package/{esm2022 → esm2020}/lib/core/web-socket/web-socket.interface.mjs +0 -0
  445. /package/{esm2022 → esm2020}/lib/core/window.token.mjs +0 -0
  446. /package/{esm2022 → esm2020}/lib/core/xps-boolean.enum.mjs +0 -0
  447. /package/{esm2022 → esm2020}/public-api.mjs +0 -0
  448. /package/{esm2022 → esm2020}/xsolla-payment-client-core.mjs +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xsolla-payment-client-core.mjs","sources":["../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/app-error.class.ts","../../../packages/payment-client-core/src/lib/core/settings/empty-utils-response.error.ts","../../../packages/payment-client-core/src/lib/core/window.token.ts","../../../packages/payment-client-core/src/lib/core/http/secure-api/api-url.const.ts","../../../packages/payment-client-core/src/lib/core/http/secure-api/secure-api.service.ts","../../../packages/payment-client-core/src/lib/core/settings/settings.service.ts","../../../packages/payment-client-core/src/lib/core/country/country.service.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/response-error.class.ts","../../../packages/payment-client-core/src/lib/core/boolean-number.enum.ts","../../../packages/payment-client-core/src/lib/core/payment-methods/payment-methods-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment-methods/payment-methods-response.token.ts","../../../packages/payment-client-core/src/lib/core/payment-methods/payment-methods.service.ts","../../../packages/payment-client-core/src/lib/core/saved-methods/saved-methods-response.class.ts","../../../packages/payment-client-core/src/lib/core/saved-methods/saved-methods-response.token.ts","../../../packages/payment-client-core/src/lib/core/saved-methods/saved-methods.service.ts","../../../packages/payment-client-core/src/lib/core/user-balance/user-balance-response.class.ts","../../../packages/payment-client-core/src/lib/core/user-balance/user-balance-response.token.ts","../../../packages/payment-client-core/src/lib/core/user-balance/user-balance.service.ts","../../../packages/payment-client-core/src/lib/core/url/url.service.ts","../../../packages/payment-client-core/src/lib/core/payment/config/config.service.ts","../../../packages/payment-client-core/src/lib/core/payment/xps-comand.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/field-names.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/submit/response/submit-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment/initialize/response/initialize-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment/submit/response/is-submit-response.function.ts","../../../packages/payment-client-core/src/lib/core/payment/form/input-event.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/initialize/response/initialize-response.token.ts","../../../packages/payment-client-core/src/lib/core/user-behaviour-analytics/user-behaviour-event-name.enum.ts","../../../packages/payment-client-core/src/lib/core/user-behaviour-analytics/user-behaviour-event/user-behaviour-event-types.ts","../../../packages/payment-client-core/src/lib/core/payment/credit-card-payment-methods-id.variable.ts","../../../packages/payment-client-core/src/lib/core/user-agent/browsers.ts","../../../packages/payment-client-core/src/lib/core/user-agent/device.enum.ts","../../../packages/payment-client-core/src/lib/core/user-agent/os.ts","../../../packages/payment-client-core/src/lib/core/user-agent/user-agent.service.ts","../../../packages/payment-client-core/src/lib/core/payment/xps-api/xps-api.service.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/redirect/ps4-pages/pages-payment-methods-id.const.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/redirect/ps4-pages/pages-routes.const.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/redirect/pay-station4-url.const.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/redirect/redirect.action.class.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/show-fields/show-fields.action.class.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/check-status/check-status.action.class.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/show-errors/show-errors.action.class.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/terminal-error.class.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-groups.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/response/status-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/status-updated/status-updated.action.class.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/three-ds/three-ds.action.class.ts","../../../packages/payment-client-core/src/lib/core/sdk-payment-systems/sdk-payment-methods.const.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/special-button/special-button.action.class.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/show-qr-code/show-qr-code.action.class.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/show-mobile-payment-screen/show-mobile-payment-screen.action.class.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/next-actions.ts","../../../packages/payment-client-core/src/lib/core/payment/actions/next-action.service.ts","../../../packages/payment-client-core/src/lib/core/errors-mapping/card-number-sanction-error-codes.const.ts","../../../packages/payment-client-core/src/lib/core/errors-mapping/field-special-errors-map.const.ts","../../../packages/payment-client-core/src/lib/shared/pipes/unescape-html/unescape-html.pipe.ts","../../../packages/payment-client-core/src/lib/core/errors-mapping/xps-response-errors-mapping.service.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/elk-error-types.enum.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/tagged-error.class.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/encrypt-card-error.ts","../../../packages/payment-client-core/src/lib/core/credit-card/four-block-mask.const.ts","../../../packages/payment-client-core/src/lib/core/credit-card/credit-card-types.enum.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/visa.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/mastercard.ts","../../../packages/payment-client-core/src/lib/core/credit-card/default-mask.const.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/maestro.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/american-express.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/diners-clubs.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/discover.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/jcb.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/dankort.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/hipercard.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/elo.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/aura.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/naranja.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/mir.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/china-union-pay.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/default-card.ts","../../../packages/payment-client-core/src/lib/core/credit-card/types/postepay.ts","../../../packages/payment-client-core/src/lib/core/credit-card/ordered-cards-settings.const.ts","../../../packages/payment-client-core/src/lib/core/credit-card/credit-cards-map.const.ts","../../../packages/payment-client-core/src/lib/core/credit-card/credit-card.service.ts","../../../packages/payment-client-core/src/lib/core/encrypt-credit-card/encrypt-credit-card.service.ts","../../../packages/payment-client-core/src/lib/core/user-behaviour-analytics/user-behaviour-event/user-behaviour-event-categories.ts","../../../packages/payment-client-core/src/lib/core/user-behaviour-analytics/one-time-analytics-events.const.ts","../../../packages/payment-client-core/src/lib/core/user-behaviour-analytics/event-builder/event-parameter-types.ts","../../../packages/payment-client-core/src/lib/core/user-behaviour-analytics/event-builder/event-builder.service.ts","../../../packages/payment-client-core/src/lib/core/user-behaviour-analytics/user-behaviour-analytics.service.ts","../../../packages/payment-client-core/src/lib/core/payment/initialize/initialize.service.ts","../../../packages/payment-client-core/src/lib/core/payment/xps-api-part-request.abstract.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/token-error.class.ts","../../../packages/payment-client-core/src/lib/core/payment/submit/request/submit-request.class.ts","../../../packages/payment-client-core/src/lib/core/payment/submit/request/submit-request.token.ts","../../../packages/payment-client-core/src/lib/core/payment/submit/response/submit-response.token.ts","../../../packages/payment-client-core/src/lib/core/device-finger-print/device-finger-print.service.ts","../../../packages/payment-client-core/src/lib/core/payment/submit/submit.service.ts","../../../packages/payment-client-core/src/lib/core/payment/emit-data.service.abstract.ts","../../../packages/payment-client-core/src/lib/core/payment/sync/request/sync-request.class.ts","../../../packages/payment-client-core/src/lib/core/payment/sync/request/sync-request.token.ts","../../../packages/payment-client-core/src/lib/core/payment/sync/response/sync-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment/sync/response/sync-response.token.ts","../../../packages/payment-client-core/src/lib/core/payment/sync/sync.service.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/control-config.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/text-control.config.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/convert.function.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/email/email-validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/required/required.validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/converter.abstract.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/email/email.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/restricted-value/restricted-value.validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/zip/zip.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/is-empty-input-value.function.ts","../../../packages/payment-client-core/src/lib/core/type-guards/is-string.function.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/luhn-formula-validator/luhn-formula.validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/card-number/card-number-control.config.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/credit-card-length/credit-card-min-length.validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/card-number/card-number.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/card-month/card-month.validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/card-month/card-month.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/cvv/cvv.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/birth-date/birth-date.validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/birth-date/birth-date.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/cardholder-name/cardholder-name.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/cpf-name/cpf-name-regex.variable.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/cpf-name/cpf-name.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/cpf-number/cpf-number.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/street-number/street-number.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/text/text.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/checkbox/checkbox-control.config.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/checkbox/checkbox.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/search-select/select-control.config.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/select/select.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/pin/pin.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/radio-control/radio-control.config.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/radio-group/radio-group.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/pricepoint/pricepoint.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/coupon/coupon-control.config.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/coupon/coupon-validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/coupon/coupon.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/card-year/card-year.validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/card-year/card-year.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/phone-validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/min-length-validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/max-length-validator.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/phone-control.config.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/phone.converter.ts","../../../packages/payment-client-core/src/lib/core/payment/form/converters/converters-map.ts","../../../packages/payment-client-core/src/lib/core/payment/form/controls/control-config.service.ts","../../../packages/payment-client-core/src/lib/core/payment/form/form.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/status-search-param.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/required-status-search-params.const.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/status-search-params.map.ts","../../../packages/payment-client-core/src/lib/core/payment/xps-api-part.abstract.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/request/status-request.class.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/request/status-request.token.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/response/status-response.token.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status-request/status-request.service.ts","../../../packages/payment-client-core/src/lib/core/type-guards/is-null.function.ts","../../../packages/payment-client-core/src/lib/core/type-guards/is-undefined.function.ts","../../../packages/payment-client-core/src/lib/core/session/session.service.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/price.helpers.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/summary/default-image-patterns.const.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/vat-details-key.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/summary/sales-tax-details-key.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/summary/summary-finance-details-adapter.service.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/status/fields-with-currency.ts","../../../packages/payment-client-core/src/lib/core/country/country-iso-code.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/status/status-finance-details-adapter.service.ts","../../../packages/payment-client-core/src/lib/core/payment/finance-details/finance-details.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/check-status/request/check-status-request.class.ts","../../../packages/payment-client-core/src/lib/core/payment/status/check-status/request/check-status-request.token.ts","../../../packages/payment-client-core/src/lib/core/payment/status/check-status/response/check-status-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment/status/check-status/response/check-status-response.token.ts","../../../packages/payment-client-core/src/lib/core/payment/status/check-status/check-status.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/websocket-status/websocket-status.enum.ts","../../../packages/payment-client-core/src/lib/core/web-socket/web-socket-client-type.enum.ts","../../../packages/payment-client-core/src/lib/core/web-socket/nchan-web-socket.service.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/ws-error.class.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/elk/elk-logger.service.ts","../../../packages/payment-client-core/src/lib/core/web-socket/centrifugo-web-socket.service.ts","../../../packages/payment-client-core/src/lib/core/web-socket/web-socket.factory.ts","../../../packages/payment-client-core/src/lib/core/payment/status/websocket-status/websocket-status.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/listen-status/listen-status.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/title-class.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/status/save-payment-method-status/save-payment-method-status.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/xps-response.error.ts","../../../packages/payment-client-core/src/lib/core/payment/status/save-payment-method-status/api/saved-payment-account-changes.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/save-payment-method-status/save-payment-method-status.service.ts","../../../packages/payment-client-core/src/lib/core/payment/status/status.service.ts","../../../packages/payment-client-core/src/lib/core/payment/credit-card-state/credit-card-state.service.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/three-ds-status-websocket-types.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/api/status-three-ds/status-types.enum.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/api/status-three-ds/request/status-three-ds-request.class.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/api/status-three-ds/request/status-three-ds-request.token.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/api/status-three-ds/response/status-three-ds-response.class.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/api/status-three-ds/response/status-three-ds-response.token.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/api/status-three-ds/status-three-ds.service.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/api/notify-dfp-status/request/notify-dfp-status-request.class.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/api/notify-dfp-status/request/notify-dfp-status-request.token.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/api/notify-dfp-status/notify-dfp-status.service.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/dfp-collect/dfp-collect.service.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/reinsurance-check/reinsurance-check.service.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/three-ds-20/three-ds20.service.ts","../../../packages/payment-client-core/src/lib/core/payment/three-ds/three-ds.service.ts","../../../packages/payment-client-core/src/lib/core/payment/form-messages/form-messages.service.ts","../../../packages/payment-client-core/src/lib/core/payment/payment.service.ts","../../../packages/payment-client-core/src/lib/core/legal/refund-policy.service.ts","../../../packages/payment-client-core/src/lib/core/legal/secure-connection.service.ts","../../../packages/payment-client-core/src/lib/core/legal/disclaimer.service.ts","../../../packages/payment-client-core/src/lib/core/legal/legal.service.ts","../../../packages/payment-client-core/src/lib/core/edit-saved-methods/edit-saved-methods.service.ts","../../../packages/payment-client-core/src/lib/core/performance/xhr-action.service.ts","../../../packages/payment-client-core/src/lib/core/performance/performance.service.ts","../../../packages/payment-client-core/src/lib/core/combined-payment-methods/combined-payment-methods.service.ts","../../../packages/payment-client-core/src/lib/core/countries-api/countries-api.service.ts","../../../packages/payment-client-core/src/lib/core-library.service.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/errors/http-error.class.ts","../../../packages/payment-client-core/src/lib/core/exceptions-handling/http-interceptor/http-exceptions.interceptor.ts","../../../packages/payment-client-core/src/lib/core/payment/form/validators/validators.module.ts","../../../packages/payment-client-core/src/lib/core/payment/form/form.module.ts","../../../packages/payment-client-core/src/lib/shared/pipes/pipes.module.ts","../../../packages/payment-client-core/src/lib/core-library.module.ts","../../../packages/payment-client-core/src/lib/core/sdk-payment-systems/payment-systems/payment-system-processing.service.ts","../../../packages/payment-client-core/src/lib/core/sdk-payment-systems/google-pay/google-pay.service.ts","../../../packages/payment-client-core/src/lib/core/sdk-payment-systems/apple-pay/apple-pay.const.ts","../../../packages/payment-client-core/src/lib/core/agreementsGroup.const.ts","../../../packages/payment-client-core/src/lib/core/sdk-payment-systems/apple-pay/apple-pay.errors.enum.ts","../../../packages/payment-client-core/src/lib/core/sdk-payment-systems/apple-pay/apple-pay.service.ts","../../../packages/payment-client-core/src/public-api.ts","../../../packages/payment-client-core/src/xsolla-payment-client-core.ts"],"sourcesContent":["export class AppError extends Error {\n public constructor(message: string) {\n super(message);\n }\n}\n","import { AppError } from '../exceptions-handling/errors/app-error.class';\n\nexport class EmptyUtilsResponseError extends AppError {\n public constructor() {\n super('Utils response is empty or not requested. Check your token.');\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ExtendedWindow } from './extended-window.interface';\n\nexport const windowToken: InjectionToken<ExtendedWindow> = new InjectionToken(\n 'window'\n);\n","export const defaultApiUrl = 'https://secure.xsolla.com/paystation2/api/';\nexport const sandboxApiUrl =\n 'https://sandbox-secure.xsolla.com/paystation2/api/';\n","import { Observable } from 'rxjs';\nimport { Inject, Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { windowToken } from '../../window.token';\nimport { ExtendedWindow } from '../../extended-window.interface';\nimport { RequestOptions } from './options.interface';\nimport { defaultApiUrl, sandboxApiUrl } from './api-url.const';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SecureApiClient {\n private isSandboxMode = false;\n\n public constructor(\n private readonly httpClient: HttpClient,\n @Inject(windowToken)\n private readonly window: ExtendedWindow\n ) {}\n\n public setSandboxMode(isSandboxMode: boolean): void {\n this.isSandboxMode = isSandboxMode;\n }\n\n public get<T>(url: string, options?: RequestOptions): Observable<T> {\n return this.httpClient.get<T>(`${this.baseUrl}${url}`, options);\n }\n\n public post<T>(\n url: string,\n body: unknown | null,\n options?: RequestOptions\n ): Observable<T> {\n return this.httpClient.post<T>(`${this.baseUrl}${url}`, body, options);\n }\n\n public patch<T>(\n url: string,\n body: unknown | null,\n options?: RequestOptions\n ): Observable<T> {\n return this.httpClient.patch<T>(`${this.baseUrl}${url}`, body, options);\n }\n\n public put<T>(\n url: string,\n body: unknown | null,\n options?: RequestOptions\n ): Observable<T> {\n return this.httpClient.put<T>(`${this.baseUrl}${url}`, body, options);\n }\n\n public delete<T>(url: string, options?: RequestOptions): Observable<T> {\n return this.httpClient.delete<T>(`${this.baseUrl}${url}`, options);\n }\n\n public get baseUrl(): string {\n let predefinedBaseUrl: string | null = null;\n\n try {\n predefinedBaseUrl = this.window.localStorage.getItem('devApiUrl');\n } catch (e: unknown) {\n console.warn('localStorage is not available');\n }\n\n if (predefinedBaseUrl) {\n return predefinedBaseUrl;\n }\n\n return this.isSandboxMode ? sandboxApiUrl : defaultApiUrl;\n }\n}\n","import { firstValueFrom } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { HttpParams } from '@angular/common/http';\nimport { SecureApiClient } from '../http/secure-api/secure-api.service';\nimport { DeepReadonly } from '../deep-readonly.type';\nimport { InitConfiguration } from './configuration.interface';\nimport { EmptyUtilsResponseError } from './empty-utils-response.error';\nimport { User } from './user.interface';\nimport { Settings } from './settings.interface';\nimport { Purchase } from './purchase.interface';\nimport { Project } from './project.interface';\nimport { UtilsResponse } from './utils-response.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SettingsService {\n public get project(): DeepReadonly<Project> {\n if (!this.response) {\n throw new EmptyUtilsResponseError();\n }\n\n return this.response.project;\n }\n\n public get purchase(): DeepReadonly<Purchase> {\n if (!this.response) {\n throw new EmptyUtilsResponseError();\n }\n\n return this.response.purchase;\n }\n\n public get settings(): DeepReadonly<Settings> {\n if (!this.response) {\n throw new EmptyUtilsResponseError();\n }\n\n if (this.response?.purchase_external_id) {\n return {\n ...this.response.settings,\n purchase_external_id: this.response.purchase_external_id,\n };\n }\n\n return this.response?.settings;\n }\n\n public get user(): DeepReadonly<User> {\n if (!this.response) {\n throw new EmptyUtilsResponseError();\n }\n\n return this.response.user;\n }\n\n public get utilsResponse(): DeepReadonly<UtilsResponse> {\n if (!this.response) {\n throw new EmptyUtilsResponseError();\n }\n\n return this.response;\n }\n\n public get unsafeUtilsResponse(): DeepReadonly<UtilsResponse | null> {\n return this.response ?? null;\n }\n\n public get isEmpty(): boolean {\n return !this.response;\n }\n\n public get token(): string {\n return this._token;\n }\n\n public get hasResponse(): boolean {\n return !!this.response;\n }\n\n public isInitialized = false;\n\n private response!: DeepReadonly<UtilsResponse> | undefined;\n\n private _token = '';\n\n private sandboxMode = false;\n private _refer!: number;\n\n public constructor(private readonly secureApi: SecureApiClient) {}\n\n public async init(configuration: InitConfiguration): Promise<void> {\n if (!configuration.token) {\n return Promise.reject('token is missing');\n }\n\n this._token = configuration.token;\n this.sandboxMode = !!configuration.sandbox;\n this._refer = configuration.refer;\n\n await this.sendRequest(this.token);\n\n this.isInitialized = true;\n }\n\n public isSandboxMode(): boolean {\n return this.sandboxMode;\n }\n\n public get refer(): number {\n return this._refer;\n }\n\n private async sendRequest(token: string): Promise<void> {\n const params = new HttpParams().set('access_token', token);\n\n this.secureApi.setSandboxMode(this.isSandboxMode());\n\n this.response = await firstValueFrom(\n this.secureApi.get<UtilsResponse>('utils', { params })\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SettingsService } from '../settings/settings.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CountryService {\n private userDefinedCountry: string | null = null;\n\n public constructor(private readonly settingsService: SettingsService) {}\n\n public setCountry(country: string): void {\n this.userDefinedCountry = country;\n }\n\n public getCountry(): string {\n return this.userDefinedCountry ?? this.getTokenCountry();\n }\n\n private getTokenCountry(): string {\n return this.settingsService.user.country.value;\n }\n}\n","import { AppError } from './app-error.class';\n\nexport class ResponseError extends AppError {\n public constructor(message?: string) {\n super('Response failed' + (message ? `: \"${message}\".` : '.'));\n }\n}\n","export enum BooleanNumber {\n false = 0,\n true = 1,\n}\n","import { BooleanNumber } from '../boolean-number.enum';\nimport { PaymentMethodApi } from './payment-method-api.interface';\nimport { PaymentMethod } from './payment-method.interface';\nimport { PaymentMethodsApi } from './payment-methods-api.interface';\n\nexport class PaymentMethodsResponse {\n public readonly top: PaymentMethod[];\n public readonly especial: PaymentMethod[];\n public readonly remained: PaymentMethod[];\n public readonly remainedCount: { total: number; visible: number };\n\n public constructor(paymentMethods: PaymentMethodsApi) {\n this.especial = paymentMethods.especial.map((method) =>\n this.mapPaymentMethod(method)\n );\n this.top = paymentMethods.top.map((method) =>\n this.mapPaymentMethod(method)\n );\n this.remained = paymentMethods.remained.map((method) =>\n this.mapPaymentMethod(method)\n );\n this.remainedCount = {\n total: paymentMethods.remained_count.total,\n visible: paymentMethods.remained_count.visible,\n };\n }\n\n private mapPaymentMethod(method: PaymentMethodApi): PaymentMethod {\n return {\n id: method.id,\n rank: method.rank,\n name: method.name,\n aliases: method.aliases,\n categories: method.cat,\n isVisible: method.is_visible,\n recommended: method.recommended === BooleanNumber.true,\n enabledSaveAccount: method.enabled_save_account,\n iconName: method.switch_icon_name,\n };\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { PaymentMethodsResponse } from './payment-methods-response.class';\n\ntype ResponseParameters = ConstructorParameters<typeof PaymentMethodsResponse>;\n\nexport type PaymentMethodsResponseFactory = (\n ...args: ResponseParameters\n) => PaymentMethodsResponse;\n\nexport const paymentMethodsResponseFactoryToken: InjectionToken<PaymentMethodsResponseFactory> =\n new InjectionToken<PaymentMethodsResponseFactory>('PaymentMethodsResponse');\n\nexport const paymentMethodsResponseFactoryProvider: ValueProvider = {\n provide: paymentMethodsResponseFactoryToken,\n useValue: (...args: ResponseParameters) =>\n new PaymentMethodsResponse(...args),\n};\n","import { HttpHeaders } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { lastValueFrom, map } from 'rxjs';\nimport { CountryService } from '../country/country.service';\nimport { ResponseError } from '../exceptions-handling/errors/response-error.class';\nimport { SecureApiClient } from '../http/secure-api/secure-api.service';\nimport { SettingsService } from '../settings/settings.service';\nimport { PaymentMethod } from './payment-method.interface';\nimport { PaymentMethodsRequestParams } from './payment-methods-request-params.interface';\nimport { PaymentMethodsResponse } from './payment-methods-response.class';\nimport { PaymentMethodsResponseApi } from './payment-methods-response.interface';\nimport {\n PaymentMethodsResponseFactory,\n paymentMethodsResponseFactoryToken,\n} from './payment-methods-response.token';\nimport { XpsBoolean } from '../xps-boolean.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PaymentMethodsService {\n private readonly apiRoute = 'remained_payment_methods';\n\n private readonly cache = new Map<string, Promise<PaymentMethodsResponse>>();\n\n public constructor(\n @Inject(paymentMethodsResponseFactoryToken)\n private readonly responseFactory: PaymentMethodsResponseFactory,\n private readonly settingsService: SettingsService,\n private readonly countryService: CountryService,\n private readonly secureApi: SecureApiClient\n ) {}\n\n public async getAllMethods(): Promise<PaymentMethodsResponse> {\n return this.request();\n }\n\n public async getList(isSaveMethodMode?: boolean): Promise<PaymentMethod[]> {\n const response = await this.request(isSaveMethodMode);\n\n if (this.isFixedPaymentMethod) {\n return this.filterMethodsByFixedPaymentMethod(response.remained);\n }\n\n return response.remained;\n }\n\n public async getQuickMethods(): Promise<PaymentMethod[]> {\n const response = await this.request();\n return response.especial;\n }\n\n private async request(\n isSaveMethodMode?: boolean\n ): Promise<PaymentMethodsResponse> {\n const requestParams: PaymentMethodsRequestParams = {\n access_token: this.settingsService.token,\n country: this.countryService.getCountry(),\n save_payment_account_only: isSaveMethodMode\n ? XpsBoolean.true\n : XpsBoolean.false,\n };\n const cacheKey = JSON.stringify(requestParams);\n\n if (!this.cache.has(cacheKey)) {\n this.cache.set(\n cacheKey,\n lastValueFrom(\n this.secureApi\n .post<PaymentMethodsResponseApi>(\n this.apiRoute,\n new URLSearchParams({ ...requestParams }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n .pipe(\n map((response) => this.responseFactory(response.payment_methods))\n )\n ).catch((error: Error) => {\n throw new ResponseError(error.message);\n })\n );\n }\n\n // @ts-expect-error the map already has the cache with key\n return this.cache.get(cacheKey);\n }\n\n private filterMethodsByFixedPaymentMethod(\n methods: PaymentMethod[]\n ): PaymentMethod[] {\n const fixedPid = this.settingsService.purchase?.payment_system?.id;\n const paymentMethod = methods.find((method) => method.id === fixedPid);\n\n return paymentMethod ? [paymentMethod] : [];\n }\n\n private get isFixedPaymentMethod(): boolean {\n return !!this.settingsService.purchase?.payment_system?.id;\n }\n}\n","import { SavedMethodsResponseApi } from './saved-methods-response.interface';\nimport { SavedMethodApi } from './saved-method-api.interface';\nimport { SavedMethod } from './saved-method.interface';\n\nexport class SavedMethodsResponse {\n public readonly list: SavedMethod[];\n\n public constructor(savedMethods: SavedMethodsResponseApi) {\n this.list = savedMethods.list.map((method) => this.mapSavedMethod(method));\n }\n\n private mapSavedMethod(method: SavedMethodApi): SavedMethod {\n return {\n currency: method.currency,\n form: method.form,\n id: method.id,\n isSelected: method.isSelected,\n isBabkaPay: method.is_babka_pay,\n name: method.name,\n pid: method.pid,\n psName: method.psName,\n recurrentType: method.recurrent_type,\n replaced: method.replaced,\n type: method.type,\n cardExpiryDate: method.card_expiry_date,\n iconName: method.switch_icon_name,\n partner: method.partner,\n };\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { SavedMethodsResponse } from './saved-methods-response.class';\n\ntype ResponseParameters = ConstructorParameters<typeof SavedMethodsResponse>;\n\nexport type SavedMethodsResponseFactory = (\n ...args: ResponseParameters\n) => SavedMethodsResponse;\n\nexport const savedMethodsResponseFactoryToken: InjectionToken<SavedMethodsResponseFactory> =\n new InjectionToken<SavedMethodsResponseFactory>('SavedMethodsResponse');\n\nexport const savedMethodsResponseFactoryProvider: ValueProvider = {\n provide: savedMethodsResponseFactoryToken,\n useValue: (...args: ResponseParameters) => new SavedMethodsResponse(...args),\n};\n","import { HttpHeaders } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { lastValueFrom, map } from 'rxjs';\nimport { ResponseError } from '../exceptions-handling/errors/response-error.class';\nimport { SecureApiClient } from '../http/secure-api/secure-api.service';\nimport { SettingsService } from '../settings/settings.service';\nimport { SavedMethodsRequestParams } from './saved-methods-request-params.interface';\nimport { SavedMethodsResponseApi } from './saved-methods-response.interface';\nimport {\n SavedMethodsResponseFactory,\n savedMethodsResponseFactoryToken,\n} from './saved-methods-response.token';\nimport { SavedMethodsResponse } from './saved-methods-response.class';\nimport { SavedMethod } from './saved-method.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SavedMethodsService {\n private readonly apiRoute = 'savedmethods';\n\n private readonly cache = new Map<string, Promise<SavedMethodsResponse>>();\n\n public constructor(\n @Inject(savedMethodsResponseFactoryToken)\n private readonly responseFactory: SavedMethodsResponseFactory,\n private readonly settingsService: SettingsService,\n private readonly secureApi: SecureApiClient\n ) {}\n\n public async getList(needResetCache = false): Promise<SavedMethod[]> {\n if (needResetCache) {\n this.cache.clear();\n }\n\n const response = await this.request();\n return response.list;\n }\n\n private async request(): Promise<SavedMethodsResponse> {\n const requestParams: SavedMethodsRequestParams = {\n access_token: this.settingsService.token,\n };\n const cacheKey = JSON.stringify(requestParams);\n\n if (!this.cache.has(cacheKey)) {\n this.cache.set(\n cacheKey,\n lastValueFrom(\n this.secureApi\n .post<SavedMethodsResponseApi>(\n this.apiRoute,\n new URLSearchParams({ ...requestParams }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n .pipe(map((response) => this.responseFactory(response)))\n ).catch((error: Error) => {\n throw new ResponseError(error.message);\n })\n );\n }\n\n // @ts-expect-error the map already has the cache with key\n return this.cache.get(cacheKey);\n }\n}\n","import { UserBalanceApi } from './user-balance-api.interface';\n\nexport class UserBalanceResponse {\n public readonly isEnoughUserBalance: boolean;\n public readonly isEnoughUserRecurrentBalance: boolean;\n\n public constructor(userBalance: UserBalanceApi) {\n this.isEnoughUserBalance = userBalance.is_enough_user_balance ?? false;\n this.isEnoughUserRecurrentBalance =\n userBalance.is_enough_user_recurrent_balance ?? false;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { UserBalanceResponse } from './user-balance-response.class';\n\ntype ResponseParameters = ConstructorParameters<typeof UserBalanceResponse>;\n\nexport type UserBalanceResponseFactory = (\n ...args: ResponseParameters\n) => UserBalanceResponse;\n\nexport const userBalanceResponseFactoryToken: InjectionToken<UserBalanceResponseFactory> =\n new InjectionToken<UserBalanceResponseFactory>('UserBalanceResponse');\n\nexport const userBalanceResponseFactoryProvider: ValueProvider = {\n provide: userBalanceResponseFactoryToken,\n useValue: (...args: ResponseParameters) => new UserBalanceResponse(...args),\n};\n","import { HttpHeaders } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { lastValueFrom, map } from 'rxjs';\nimport { ResponseError } from '../exceptions-handling/errors/response-error.class';\nimport { SecureApiClient } from '../http/secure-api/secure-api.service';\nimport { SettingsService } from '../settings/settings.service';\nimport {\n UserBalanceResponseFactory,\n userBalanceResponseFactoryToken,\n} from './user-balance-response.token';\nimport { UserBalanceResponse } from './user-balance-response.class';\nimport { UserBalanceRequestParams } from './user-balance-request-params.interface';\nimport { UserBalanceApi } from './user-balance-api.interface';\nimport { Balance } from '../settings/balance.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserBalanceService {\n private readonly apiRoute = 'balance/sufficiency';\n\n private readonly cache = new Map<string, Promise<UserBalanceResponse>>();\n\n public constructor(\n @Inject(userBalanceResponseFactoryToken)\n private readonly responseFactory: UserBalanceResponseFactory,\n private readonly settingsService: SettingsService,\n private readonly secureApi: SecureApiClient\n ) {}\n\n public async getUserBalance(): Promise<UserBalanceResponse> {\n return this.request();\n }\n\n public getUserBalanceValue(): Balance | null {\n return this.settingsService.user.user_balance;\n }\n\n private async request(): Promise<UserBalanceResponse> {\n const requestParams: UserBalanceRequestParams = {\n access_token: this.settingsService.token,\n };\n const cacheKey = JSON.stringify(requestParams);\n\n if (!this.cache.has(cacheKey)) {\n this.cache.set(\n cacheKey,\n lastValueFrom(\n this.secureApi\n .post<UserBalanceApi>(\n this.apiRoute,\n new URLSearchParams({ ...requestParams }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n .pipe(map((response) => this.responseFactory(response)))\n ).catch((error: Error) => {\n throw new ResponseError(error.message);\n })\n );\n }\n\n // @ts-expect-error the map already has the cache with key\n return this.cache.get(cacheKey);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SearchParams } from './search-params.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UrlService {\n public addSearchParams(url: string, params: SearchParams = {}): string {\n if (!url) {\n return '';\n }\n\n const urlObject = new URL(url);\n for (const [key, value] of Object.entries(params)) {\n urlObject.searchParams.set(key, value);\n }\n\n return urlObject.toString();\n }\n\n public getSearchParams(url: string): SearchParams {\n if (!url) {\n return {};\n }\n\n const urlObject = new URL(url);\n const searchParams: SearchParams = {};\n\n for (const [key, value] of urlObject.searchParams) {\n searchParams[key] = value;\n }\n\n return searchParams;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SettingsService } from '../../settings/settings.service';\nimport { UrlService } from '../../url/url.service';\nimport { PaymentConfig } from '../payment-config.interface';\nimport { XpsBoolean } from '../../xps-boolean.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PaymentConfigService {\n public constructor(\n private readonly urlService: UrlService,\n private readonly settingsService: SettingsService\n ) {}\n\n public enrich(config: PaymentConfig): PaymentConfig {\n if (!config.returnUrl) {\n throw new Error('URL is not provided in payment config');\n }\n\n return {\n ...config,\n returnUrl: this.enrichReturnUrl(\n config.returnUrl,\n !!config.savePaymentMethod\n ),\n };\n }\n\n private enrichReturnUrl(\n returnUrl: string,\n savePaymentMethod: boolean\n ): string {\n const enrichedUrl = this.urlService.addSearchParams(returnUrl, {\n token: this.settingsService.token,\n isSavePaymentAccount: savePaymentMethod\n ? XpsBoolean.true\n : XpsBoolean.false,\n });\n return enrichedUrl;\n }\n}\n","export enum XpsCommand {\n form = 'form',\n check = 'check',\n status = 'status',\n checkout = 'checkout',\n account = 'account',\n create = 'create',\n}\n","export enum FieldNames {\n address1 = 'address1',\n address2 = 'address2',\n address = 'address',\n allowRecurrentSubscription = 'allowRecurrentSubscription',\n allowSubscription = 'allowSubscription',\n apt = 'apt',\n availableCardTypes = 'available_card_types',\n bank = 'bank',\n birthDate = 'birth_date',\n cardMonth = 'card_month',\n cardYear = 'card_year',\n cardNumber = 'card_number',\n cardholdername = 'cardholdername',\n city = 'city',\n couponCode = 'couponCode',\n cpfName = 'cpf_name',\n cpfNumber = 'cpf_number',\n cvv = 'cvv',\n description = 'description',\n email = 'email',\n psEmail = 'psEmail',\n bazitemail = 'bazitemail',\n euCheck = 'eu_check',\n extraCvv = 'extra_cvv',\n extraCardNumber = 'extra_card_number',\n extraCardType = 'extra_card_type',\n fName = 'f_name',\n installments = 'installments',\n lName = 'l_name',\n needInstallments = 'needInstallments',\n personId = 'person_id',\n personIdAr = 'person_id_ar',\n personIdCo = 'person_id_co',\n phone = 'phone',\n purchaseDescription = 'purchaseDescription',\n recurrentType = 'recurrent_type',\n rockstarTaxes = 'rockstar_taxes',\n state = 'state',\n street = 'street',\n streetNumber = 'street_number',\n take2Taxes = 'take2_taxes',\n termsAndConditions = 'termsAndConditions',\n termsAndConditionsAtariPp = 'termsAndConditionsAtariPP',\n termsAndConditionsAtariTc = 'termsAndConditionsAtariTC',\n termsAndConditionsHtcEula = 'termsAndConditionsHtcEula',\n termsAndConditionsRobloxEula = 'termsAndConditionsRobloxEula',\n termsAndConditionsRolandEula = 'termsAndConditionsRolandEula',\n termsAndConditionsDeusLoVultEula = 'termsAndConditionsDeusLoVultEula',\n termsAndConditionsOnzenga = 'termsAndConditionsOnzenga',\n xsollaTipsAmount = 'xsollaTipsAmount',\n zip = 'zip',\n allowSave = 'allowSave',\n koreaLimitsInstruction = 'korea_limits_instruction',\n tokenApplePay = 'token_applepay',\n fixInvoice = 'fix_invoice',\n fixPid = 'fix_pid',\n signature = 'signature',\n qr = 'qr',\n sum = 'sum',\n out = 'out',\n tinkoffDisclaimer = 'ps.tinkoff.disclaimer',\n ppEmail = 'pp_email',\n redeemPoints = 'redeemPoints',\n omnibusDirective = 'omnibus_directive',\n}\n","import { XpsResponse } from '../../xps-response.interface';\nimport { Field } from '../../field.interface';\nimport { Invoice } from '../../invoice.interface';\nimport { XpsCommand } from '../../xps-comand.enum';\nimport { FieldNames } from '../../field-names.enum';\n\nexport class SubmitResponse {\n public readonly parameters: XpsResponse;\n public readonly fields: Field[];\n public onlineBanking?: {\n url: string;\n };\n public readonly data?: unknown;\n public isNeedRedirect: boolean;\n\n public buyData: XpsResponse['buyData'];\n\n public signature?: string;\n public fixInvoice?: string;\n public hasFatalErrors?: boolean;\n public userSession?: Invoice;\n public pid: XpsResponse['pid'];\n public errors: XpsResponse['errors'];\n public summary: XpsResponse['summary'];\n public title: string;\n public currentCommand: XpsCommand | null;\n public messages: XpsResponse['messages'];\n\n public constructor(\n parameters: XpsResponse,\n public readonly responseNumber: number = 0\n ) {\n /* Todo split into properties */\n this.parameters = parameters;\n this.fields = Object.keys(parameters.form).map(\n (key: string): Field => parameters.form[key]\n );\n\n if (parameters.onlineBanking) {\n this.onlineBanking = {\n url: parameters.onlineBanking.value,\n };\n }\n\n this.isNeedRedirect =\n parameters.currentCommand === XpsCommand.account ||\n (parameters.currentCommand === XpsCommand.checkout &&\n Boolean(parameters.checkout));\n\n this.buyData = parameters.buyData;\n\n this.fixInvoice = this.fields.find(\n (field: Field) => field.name === FieldNames.fixInvoice\n )?.value;\n\n this.signature = this.fields.find(\n (field: Field) => field.name === FieldNames.signature\n )?.value;\n\n this.hasFatalErrors = parameters.textAll?.fatal;\n\n this.userSession = parameters.userSession;\n this.pid = parameters.pid;\n this.errors = parameters.errors;\n this.summary = parameters.summary;\n this.title = parameters.title;\n this.currentCommand = parameters.currentCommand;\n this.messages = parameters.messages;\n }\n}\n","import { Field } from '../../field.interface';\nimport { PaymentForm } from '../../payment-form.interface';\nimport { XpsResponse, XpsStatus } from '../../xps-response.interface';\n\nexport class InitializeResponse {\n public readonly paymentForm: PaymentForm | null = null;\n\n public constructor(response: XpsResponse) {\n this.paymentForm = this.extractPaymentForm(response);\n }\n\n private extractPaymentForm(response: XpsResponse): PaymentForm | null {\n if (!response) {\n return null;\n }\n\n return {\n totalAmount: response.buyData.sum,\n currency: response.buyData.currency,\n fields: Object.keys(response.form).map(\n (key: string): Field => (response as XpsResponse).form[key]\n ),\n taxDisclaimer: response.taxDisclaimer,\n number: response.number,\n barcode: response.barcode,\n instruction: response.instruction,\n offers: response.offers,\n error: response.error,\n errors: response.errors,\n restrictions: response.restrictions,\n info: response.info,\n buyData: response.buyData,\n pid: response.pid,\n messages: response.messages ?? [],\n title: response.title,\n summary: response.summary,\n skipForm: response.skipForm,\n isSavedMethodPayment: !!response.form?.saved_method_id,\n couponCode: response.form?.couponCode?.value || '',\n publicId: response.public_id,\n skipCheckout: response.skipCheckout,\n koreaNotification: response.form.korea_limits_instruction,\n isCheckout: response.isCheckout,\n categories: response.categories,\n hasFatalErrors: response.textAll?.fatal,\n userSession: response.userSession,\n statusText: (response.status as XpsStatus)?.statusData?.stateText ?? null,\n country: response.country ? response.country.iso : null,\n };\n }\n}\n","import { SubmitResponse } from './submit-response.class';\n\nexport const isSubmitResponse = (value: unknown): value is SubmitResponse => {\n return value instanceof SubmitResponse;\n};\n","export enum InputEventName {\n blur = 'blur',\n focus = 'focus',\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { InitializeResponse } from './initialize-response.class';\n\nexport type ResponseParameters = ConstructorParameters<\n typeof InitializeResponse\n>;\n\nexport type InitializeResponseFactory = (\n ...args: ResponseParameters\n) => InitializeResponse;\n\nexport const initializeResponseFactoryToken: InjectionToken<InitializeResponseFactory> =\n new InjectionToken<InitializeResponseFactory>('InitializeResponse');\n\nexport const initializeResponseFactoryProvider: ValueProvider = {\n provide: initializeResponseFactoryToken,\n useValue: (...args: ResponseParameters) => new InitializeResponse(...args),\n};\n","export enum UserBehaviourEventName {\n openPaystation = 'open-paystation',\n showMethodHeader = 'show-method-header',\n showErrorMessage = 'show-error-message',\n openStatusError = 'open-status-error',\n}\n","export const userBehaviourEventTypes = {\n open: 'open',\n show: 'show',\n click: 'click',\n manual: 'manual',\n store: 'store',\n} as const;\n","export const masterCardAndVisaPaymentMethodId = 26;\nexport const maestroPaymentMethodId = 490;\nexport const creditCardPaymentMethodId = 1380;\nexport const americanExpressMethodId = 714;\n\nexport const specialCards: number[] = [\n maestroPaymentMethodId,\n masterCardAndVisaPaymentMethodId,\n americanExpressMethodId,\n];\n\nexport const cardsWith3ds: number[] = [\n masterCardAndVisaPaymentMethodId,\n maestroPaymentMethodId,\n creditCardPaymentMethodId,\n];\n","export const unknownValue = 'unknown' as const;\n\nexport type BrowserName =\n | typeof browsers[number]['sentName']\n | typeof unknownValue\n | null;\n\nexport type BrowserApp =\n | typeof browsers[number]['shortName']\n | typeof unknownValue\n | null;\n\nexport interface BrowserInterface {\n sentName:\n | 'Mozilla Firefox'\n | 'Samsung Internet'\n | 'Opera'\n | 'Microsoft Edge (Legacy)'\n | 'Microsoft Edge (Chromium)'\n | 'Google Chrome or Chromium'\n | 'Apple Safari';\n shortName:\n | 'Firefox'\n | 'SamsungBrowser'\n | 'Opera'\n | 'MSEdge-legacy'\n | 'MSEdge'\n | 'Chrome'\n | 'Safari';\n regexpBrowserNameWithVersion: string;\n}\n\nexport const browsers: BrowserInterface[] = [\n {\n sentName: 'Mozilla Firefox',\n shortName: 'Firefox',\n regexpBrowserNameWithVersion: '(Firefox)\\\\/(.+)',\n },\n {\n sentName: 'Samsung Internet',\n shortName: 'SamsungBrowser',\n regexpBrowserNameWithVersion: '(SamsungBrowser)\\\\/(.+)\\\\s',\n },\n {\n sentName: 'Opera',\n shortName: 'Opera',\n regexpBrowserNameWithVersion: '(Opera)\\\\/(.+)',\n },\n {\n sentName: 'Opera',\n shortName: 'Opera',\n regexpBrowserNameWithVersion: '(OPR)\\\\/(.+)',\n },\n {\n sentName: 'Microsoft Edge (Legacy)',\n shortName: 'MSEdge-legacy',\n regexpBrowserNameWithVersion: '(Edge)\\\\/(.+)',\n },\n {\n sentName: 'Microsoft Edge (Chromium)',\n shortName: 'MSEdge',\n regexpBrowserNameWithVersion: '(Edg)\\\\/(.+)',\n },\n {\n sentName: 'Google Chrome or Chromium',\n shortName: 'Chrome',\n regexpBrowserNameWithVersion: '(Chrome)\\\\/(.+)\\\\s',\n },\n {\n sentName: 'Apple Safari',\n shortName: 'Safari',\n regexpBrowserNameWithVersion: '(Safari)\\\\/(.+)',\n },\n];\n","export enum Device {\n mobile = 'mobile',\n desktop = 'desktop',\n}\n","// eslint-disable-next-line @typescript-eslint/naming-convention\ninterface OS {\n name: string;\n regExp: string;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\ntype OSList = OS[];\n\nexport const osList: OSList = [\n {\n name: 'Windows XP',\n regExp: 'Windows XP',\n },\n {\n name: 'Windows XP',\n regExp: 'Windows NT 5.1|Windows NT5.1',\n },\n {\n name: 'Windows Vista',\n regExp: 'Windows NT 6.0',\n },\n {\n name: 'Windows 7',\n regExp: 'Windows NT 6.1',\n },\n {\n name: 'Windows 8',\n regExp: 'Windows NT 6.2',\n },\n {\n name: 'Windows 8.1',\n regExp: 'Windows NT 6.3',\n },\n {\n name: 'Windows 10',\n regExp: 'Windows NT 10.0',\n },\n {\n name: 'Windows CE',\n regExp: 'Windows CE',\n },\n {\n name: 'iPhone',\n regExp: 'iphone',\n },\n {\n name: 'iPod',\n regExp: 'ipod',\n },\n {\n name: 'iPad',\n regExp: 'ipad',\n },\n {\n name: 'Android',\n regExp: 'Android ([0-9]{1,2}.[0-9]{1,2}.?[0-9]{0,3})',\n },\n {\n name: 'Android',\n regExp: 'Android',\n },\n {\n name: 'Android',\n regExp: 'android',\n },\n {\n name: 'BlackBerry',\n regExp: 'blackberry',\n },\n {\n name: 'Mobile',\n regExp: 'webos',\n },\n {\n name: 'Nintendo WiiU',\n regExp: 'Nintendo WiiU',\n },\n {\n name: 'Xbox One S',\n regExp: 'XBOX_ONE_ED',\n },\n {\n name: 'Xbox One',\n regExp: 'Xbox; Xbox One',\n },\n {\n name: 'PlayStation',\n regExp: 'PlayStation',\n },\n {\n name: 'Windows',\n regExp: '(win)([0-9]{1,2}\\\\.[0-9x]{1,2})',\n },\n {\n name: 'Windows',\n regExp: '(windows)([0-9x]{2})',\n },\n {\n name: 'Windows',\n regExp: '(windows)([0-9]{1,2}\\\\.[0-9]{1,2})',\n },\n {\n name: 'Windows',\n regExp: 'win32',\n },\n {\n name: 'Java',\n regExp: '(java)([0-9]{1,2}\\\\.[0-9]{1,2}\\\\.[0-9]{1,2})',\n },\n {\n name: 'Solaris',\n regExp: '(Solaris)([0-9]{1,2}\\\\.[0-9x]{1,2}){0,1}',\n },\n {\n name: 'Unix',\n regExp: 'unix',\n },\n {\n name: 'Mac OS X',\n regExp: 'Mac OS X',\n },\n {\n name: 'Mac OS',\n regExp: '(mac|Macintosh)',\n },\n {\n name: 'SunOS',\n regExp: '(sunos)([0-9]{1,2}\\\\.[0-9]{1,2}){0,1}',\n },\n {\n name: 'BeOS',\n regExp: '(beos)([0-9]{1,2}\\\\.[0-9]{1,2}){0,1}',\n },\n {\n name: 'RISC OS',\n regExp: '(risc os)([0-9]{1,2}\\\\.[0-9]{1,2})',\n },\n {\n name: 'FreeBSD',\n regExp: 'freebsd',\n },\n {\n name: 'OpenBSD',\n regExp: 'openbsd',\n },\n {\n name: 'NetBSD',\n regExp: 'netbsd',\n },\n {\n name: 'IRIX',\n regExp: 'irix',\n },\n {\n name: 'Plan9',\n regExp: 'plan9',\n },\n {\n name: 'OSF',\n regExp: 'osf',\n },\n {\n name: 'AIX',\n regExp: 'aix',\n },\n {\n name: 'GNU Hurd',\n regExp: 'GNU Hurd',\n },\n {\n name: 'Linux - Fedora',\n regExp: '(fedora)',\n },\n {\n name: 'Linux - Kubuntu',\n regExp: '(kubuntu)',\n },\n {\n name: 'Linux - Ubuntu',\n regExp: '(ubuntu)',\n },\n {\n name: 'Linux - Debian',\n regExp: '(debian)',\n },\n {\n name: 'Linux - CentOS',\n regExp: '(CentOS)',\n },\n {\n name: 'Linux - Mandriva',\n regExp: '(Mandriva).([0-9]{1,3}(\\\\.[0-9]{1,3})?(\\\\.[0-9]{1,3})?)',\n },\n {\n name: 'Linux - SUSE',\n regExp: '(SUSE).([0-9]{1,3}(\\\\.[0-9]{1,3})?(\\\\.[0-9]{1,3})?)',\n },\n {\n name: 'Linux - Slackware (Dropline GNOME)',\n regExp: '(Dropline)',\n },\n {\n name: 'Linux - ASPLinux',\n regExp: '(ASPLinux)',\n },\n {\n name: 'Linux - Red Hat',\n regExp: '(Red Hat)',\n },\n {\n name: 'Linux',\n regExp: '(linux)',\n },\n {\n name: 'AmigaOS',\n regExp: '(amigaos)([0-9]{1,2}\\\\.[0-9]{1,2})',\n },\n {\n name: 'AmigaOS',\n regExp: 'amiga-aweb',\n },\n {\n name: 'Amiga',\n regExp: 'amiga',\n },\n {\n name: 'PalmOS',\n regExp: 'AvantGo',\n },\n {\n name: 'WebTV',\n regExp: '(webtv)/([0-9]{1,2}\\\\.[0-9]{1,2})',\n },\n {\n name: 'Dreamcast OS',\n regExp: 'Dreamcast',\n },\n {\n name: 'Windows',\n regExp: 'wget',\n },\n {\n name: 'Unknown',\n regExp: 'Java',\n },\n {\n name: 'Windows',\n regExp: '(msie)([0-9]{1,2}.[0-9]{1,2})',\n },\n {\n name: 'Unix',\n regExp: 'libwww-perl',\n },\n {\n name: 'Windows CE',\n regExp: 'UP.Browser',\n },\n {\n name: 'Windows',\n regExp: 'NetAnts',\n },\n];\n","import { Inject, Injectable } from '@angular/core';\nimport { browsers, BrowserName, BrowserApp, unknownValue } from './browsers';\nimport { Device } from './device.enum';\nimport { windowToken } from '../window.token';\nimport { ExtendedWindow } from '../extended-window.interface';\nimport { BrowserInfo } from './browserInfo.interface';\nimport { osList } from './os';\nimport { UserAgentData } from './user-agent-data.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserAgentService {\n private _browserName: BrowserName = null;\n private _browserVersion: string | null = null;\n private _browserApp: BrowserApp = null;\n private _platform: string | null = null;\n private _os: string | null = null;\n\n public constructor(\n @Inject(windowToken)\n private readonly window: ExtendedWindow\n ) {\n this.getUserPlatform();\n this.getBrowserInformation();\n this.getOsInformation();\n }\n\n public get browserVersion(): string | null {\n return this._browserVersion;\n }\n\n public get browserApp(): BrowserApp {\n return this._browserApp;\n }\n\n public get platform(): string | null {\n if (this._platform === unknownValue) {\n return this.osType;\n }\n\n return this._platform;\n }\n\n public get userAgent(): string {\n return this.window.navigator.userAgent;\n }\n\n public get browserDescription():\n | typeof browsers[number]['sentName']\n | string {\n if (this.browserName === unknownValue || this.browserName === null) {\n return this.userAgent;\n }\n\n return this.browserName;\n }\n\n public get isSafari(): boolean {\n return this._browserName === 'Apple Safari';\n }\n\n public get safariVersion(): null | number {\n if (!this.isSafari) {\n return null;\n }\n\n const versionRegExp = new RegExp('(Version)\\\\/(.+)\\\\s');\n const version = versionRegExp.exec(this.userAgent);\n if (!version) {\n return null;\n }\n\n return Number(version[2].split('.')[0]);\n }\n\n public get iOsVersion(): string | null {\n if (this.osType !== 'ios') {\n return null;\n }\n\n const version = /OS (\\d+)_(\\d+)_?(\\d+)?/.exec(\n this.window.navigator.appVersion\n );\n\n return version ? `${version[1]}.${version[2]}.${version[3] ?? 0}` : null;\n }\n\n public get browserInfo(): BrowserInfo {\n const browserInfo: BrowserInfo = {\n name: this.browserDescription,\n [this.browserApp?.toLowerCase() ?? unknownValue]: true,\n version: this.browserVersion,\n [this.browserEngine.toLowerCase()]: true,\n ui_version: this.isMobileDevice ? Device.mobile : Device.desktop,\n os: this.os,\n };\n\n if (this.isMobileDevice) {\n browserInfo.mobile = true;\n }\n\n if (this.osType) {\n // @ts-expect-error index is string\n browserInfo[this.osType.toLowerCase()] = true;\n }\n\n if (this.window.navigator.platform?.includes('iPhone')) {\n browserInfo.iphone = true;\n }\n\n if (this.window.navigator.platform?.includes('iPod')) {\n browserInfo.ipod = true;\n }\n\n if (this.window.navigator.platform?.includes('iPad')) {\n browserInfo.ipad = true;\n browserInfo.tablet = true;\n }\n\n if (this.isAndroid) {\n browserInfo.android = true;\n }\n\n return browserInfo;\n }\n\n public get isMobileDevice(): boolean {\n const deviceAgents = [\n 'Android',\n 'webOS',\n 'iPhone',\n 'iPad',\n 'iPod',\n 'BlackBerry',\n 'IEMobile',\n 'Opera Mini',\n 'Mobile',\n 'Tablet',\n 'Kindle',\n 'Playbook',\n 'Silk',\n 'Puffin',\n 'CriOS',\n ];\n return new RegExp(deviceAgents.join('|'), 'i').test(this.userAgent);\n }\n\n public get isIosAndNotIpad(): boolean {\n return ['iPhone', 'iPod'].includes(this.window.navigator.platform);\n }\n\n private getUserPlatform(): void {\n const experimentalPlatformApi = (\n this.window.navigator as unknown as {\n userAgentData: UserAgentData | undefined;\n }\n )?.userAgentData;\n\n const platform =\n experimentalPlatformApi?.platform ??\n this.window?.navigator?.platform ??\n unknownValue;\n\n this._platform = platform.toLowerCase();\n }\n\n private getBrowserInformation(): void {\n for (const browser of browsers) {\n const browserRegExp = new RegExp(browser.regexpBrowserNameWithVersion);\n const browserNameWithVersion = browserRegExp.exec(this.userAgent);\n\n if (browserNameWithVersion !== null) {\n this._browserName = browser.sentName;\n this._browserApp = browser.shortName;\n this._browserVersion = browserNameWithVersion[2];\n break;\n }\n\n this._browserName = unknownValue;\n this._browserApp = unknownValue;\n this._browserVersion = unknownValue;\n }\n }\n\n private getOsInformation(): void {\n for (const os of osList) {\n const osRegExp = new RegExp(os.regExp);\n const osName = osRegExp.exec(this.userAgent);\n\n if (osName !== null) {\n this._os = os.name;\n break;\n }\n\n this._os = unknownValue;\n }\n }\n\n private get browserName(): BrowserName {\n return this._browserName;\n }\n\n private get isAndroid(): boolean {\n return /Android\\s+([\\d.]+)/.test(this.userAgent);\n }\n\n private get isXbox(): boolean {\n return /xbox/i.test(this.userAgent);\n }\n\n private get isLinux(): boolean {\n return /linux/i.test(this.userAgent);\n }\n\n private get isWindows(): boolean {\n return /windows/i.test(this.userAgent);\n }\n\n private get browserEngine(): string {\n const engines = new Map<BrowserApp, string>([\n ['Firefox', 'Gecko'],\n ['Safari', 'Webkit'],\n ['MSEdge-legacy', 'EdgeHTML'],\n ['Chrome', 'Blink'],\n ['Opera', 'Blink'],\n ['MSEdge', 'Blink'],\n ['SamsungBrowser', 'Blink'],\n ]);\n\n return engines.get(this.browserApp) ?? unknownValue;\n }\n\n private get os(): string | null {\n return this._os;\n }\n\n private get osType(): string | null {\n if (['iPhone', 'iPod', 'iPad'].includes(this.window.navigator.platform)) {\n return 'ios';\n }\n\n if (this.window.navigator.platform?.includes('MacIntel')) {\n return 'mac';\n }\n\n if (this.isXbox) {\n return 'xbox';\n }\n if (this.isWindows) {\n return 'windows';\n }\n\n if (this.isAndroid) {\n return 'android';\n }\n\n if (this.isLinux) {\n return 'linux';\n }\n\n return null;\n }\n}\n","import { lastValueFrom } from 'rxjs';\nimport { Inject, Injectable } from '@angular/core';\nimport { HttpHeaders } from '@angular/common/http';\nimport { SecureApiClient } from '../../http/secure-api/secure-api.service';\nimport { XpsBoolean } from '../../xps-boolean.enum';\nimport { windowToken } from '../../window.token';\nimport { ExtendedWindow } from '../../extended-window.interface';\nimport { SettingsService } from '../../settings/settings.service';\nimport { XpsRequest } from '../xps-request.interface';\nimport { XpsResponse } from '../xps-response.interface';\nimport { XpsRequestParams } from '../xps-request-params.interface';\nimport { cardsWith3ds } from '../credit-card-payment-methods-id.variable';\nimport { CountryService } from '../../country/country.service';\nimport { UserAgentService } from '../../user-agent/user-agent.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class XpsApiService {\n private readonly directPaymentApiRoute = 'directpayment';\n\n public constructor(\n @Inject(windowToken)\n private readonly window: ExtendedWindow,\n private readonly secureApiClient: SecureApiClient,\n private readonly settingsService: SettingsService,\n private readonly countryService: CountryService,\n private readonly userAgentService: UserAgentService\n ) {}\n\n public async directPaymentRequest(\n parameters: XpsRequest\n ): Promise<XpsResponse> {\n const pid =\n parameters.pid?.toString() ??\n (parameters.xps_fix_pid as string | undefined) ??\n '';\n const paymentWithSavedMethod =\n parameters.paymentWithSavedMethod ??\n (parameters.xps_paymentWithSavedMethod as string | undefined) ??\n '';\n\n const requestParams: XpsRequestParams = {\n ...this.collectAnalyticsParameters(pid, paymentWithSavedMethod),\n ...this.collectUserSessionId(),\n country: this.countryService.getCountry(),\n refer: this.settingsService.refer,\n ...parameters,\n };\n\n if (this.userAgentService.isMobileDevice) {\n requestParams.mobile = XpsBoolean.true;\n }\n\n return lastValueFrom(\n this.secureApiClient.post<XpsResponse>(\n this.directPaymentApiRoute,\n new URLSearchParams({ ...requestParams } as unknown as {\n [key: string]: string;\n }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n );\n }\n\n private collectAnalyticsParameters(\n paymentMethodId?: string,\n paymentWithSavedMethod?: XpsBoolean | string\n ): {\n [key: string]: unknown;\n } {\n const parameters: XpsRequestParams = {};\n\n parameters.paymentWithSavedMethod = paymentWithSavedMethod\n ? paymentWithSavedMethod\n : XpsBoolean.false;\n\n if (!paymentMethodId) {\n return parameters;\n }\n\n /* If payment method with 3DSecure */\n if (cardsWith3ds.includes(Number(paymentMethodId))) {\n parameters.container3DS = JSON.stringify({\n browserjavaenabled: this.window.navigator.javaEnabled(),\n browserlanguage: this.window.navigator.language,\n browsercolordepth: this.window.screen.colorDepth,\n browserscreenheight: this.window.screen.availHeight,\n browserscreenwidth: this.window.screen.availWidth,\n browsertz: new Date().getTimezoneOffset(),\n browserappname: this.window.navigator.appName,\n browserlocaltime: new Date().toString(),\n browserplatform: this.window.navigator.platform || '',\n browsercookiesenabled: this.window.navigator.cookieEnabled,\n });\n }\n\n return parameters;\n }\n\n private collectUserSessionId(): XpsRequestParams {\n const parameters: XpsRequestParams = {};\n\n parameters.xps_idUserSession = this.settingsService.user.session_id ?? '';\n parameters.user_session_id = this.settingsService.user.session_id ?? '';\n\n return parameters;\n }\n}\n","export const vkPay = 3496;\nexport const googlePay = 3431;\nexport const applePayId = 3175;\nexport const barzahlenPay = 1679;\nexport const naverPay = 3563;\nexport const venmoPay = 3636;\n","import {\n applePayId,\n vkPay,\n barzahlenPay,\n naverPay,\n venmoPay,\n} from './pages-payment-methods-id.const';\n\nexport const pagesRoutes = new Map([\n [vkPay, '/payment/external-pages/vk-pay'],\n [applePayId, '/payment/external-pages/apple-pay'],\n [barzahlenPay, '/payment/external-pages/barzahlen-pay'],\n [naverPay, '/payment/external-pages/naver-pay'],\n [venmoPay, '/payment/external-pages/venmo-pay'],\n]);\n","export const payStation4Url = 'https://secure.xsolla.com/paystation4';\nexport const sandboxPayStationUrl =\n 'https://sandbox-secure.xsolla.com/paystation4';\n","import { SubmitResponse } from '../../submit/response/submit-response.class';\nimport { ActionCreator } from '../action.interface';\nimport {\n RedirectAction,\n RedirectActionData,\n RedirectActionType,\n} from './redirect.action.type';\nimport { XpsCommand } from '../../xps-comand.enum';\nimport { Injectable } from '@angular/core';\nimport { pagesRoutes } from './ps4-pages/pages-routes.const';\nimport { payStation4Url, sandboxPayStationUrl } from './pay-station4-url.const';\nimport { SettingsService } from '../../../settings/settings.service';\n\n@Injectable()\nexport class RedirectActionCreator implements ActionCreator {\n public readonly type: RedirectActionType = 'redirect';\n\n public constructor(private readonly settingsService: SettingsService) {}\n\n public getActionData(submitResponse: SubmitResponse): RedirectAction {\n return {\n type: this.type,\n data: {\n fields: submitResponse.fields,\n errors: submitResponse.errors,\n messages: submitResponse.messages,\n order: submitResponse.summary,\n invoiceId: submitResponse.fixInvoice,\n redirect: this.getRedirect(submitResponse),\n },\n };\n }\n\n public isSuitable(response: SubmitResponse): boolean {\n return (\n response.currentCommand === XpsCommand.account ||\n (response.currentCommand === XpsCommand.checkout &&\n Boolean(response.parameters.checkout))\n );\n }\n\n private getRedirect(\n submitResponse: SubmitResponse\n ): RedirectActionData['redirect'] {\n return {\n redirectUrl: this.getRedirectUrl(submitResponse),\n data: submitResponse.parameters.checkout.data,\n };\n }\n\n private getRedirectUrl(submitResponse: SubmitResponse): string {\n const responseRedirectUrl = submitResponse.parameters.checkout.action;\n\n const pid = submitResponse?.fields?.find(\n ({ name }) => name === 'fix_pid'\n )?.value;\n if (!pid) {\n return responseRedirectUrl;\n }\n\n const pagesPath = pagesRoutes.get(Number(pid));\n if (!pagesPath) {\n return responseRedirectUrl;\n }\n\n return this.preparePagesUrl(pagesPath);\n }\n\n private preparePagesUrl(pagesPath: string): string {\n const isSandbox = this.settingsService.isSandboxMode();\n const token = this.settingsService.token;\n\n const payStationUrl = isSandbox ? sandboxPayStationUrl : payStation4Url;\n return `${payStationUrl}/en${pagesPath}?token=${token}`;\n }\n}\n","import { ActionCreator } from '../action.interface';\nimport {\n ShowFieldsAction,\n ShowFieldsActionData,\n ShowFieldsActionType,\n} from './show-fields.action.type';\nimport { SubmitResponse } from '../../submit/response/submit-response.class';\nimport { XpsBoolean } from '../../../xps-boolean.enum';\nimport { XpsCommand } from '../../xps-comand.enum';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class ShowFieldsActionCreator implements ActionCreator {\n public type: ShowFieldsActionType = 'show_fields';\n\n public getActionData(submitResponse: SubmitResponse): ShowFieldsAction {\n const data: ShowFieldsActionData = {\n fields: [],\n errors: [],\n messages: [],\n order: {},\n };\n\n data.fields = submitResponse.fields.filter(\n (field) => field?.isVisible === XpsBoolean.true\n );\n data.errors = submitResponse.errors;\n data.messages = submitResponse.messages;\n data.order = submitResponse.summary;\n\n return {\n type: this.type,\n data,\n };\n }\n\n public isSuitable(response: SubmitResponse): boolean {\n return (\n response.currentCommand === XpsCommand.check ||\n response.currentCommand === XpsCommand.form ||\n (response.currentCommand === XpsCommand.checkout &&\n !response.parameters.checkout &&\n !response.parameters?.form?.qr)\n );\n }\n}\n","import { SubmitResponse } from '../../submit/response/submit-response.class';\nimport { ActionCreator } from '../action.interface';\nimport {\n CheckStatusAction,\n CheckStatusActionType,\n} from './check-status.action.type';\nimport { XpsCommand } from '../../xps-comand.enum';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class CheckStatusActionCreator implements ActionCreator {\n public type: CheckStatusActionType = 'check_status';\n\n public getActionData(): CheckStatusAction {\n return {\n type: this.type,\n data: null,\n };\n }\n\n public isSuitable(response: SubmitResponse): boolean {\n return response.currentCommand === XpsCommand.status;\n }\n}\n","import { ActionCreator } from '../action.interface';\nimport {\n ShowErrorsAction,\n ShowErrorsActionData,\n ShowErrorsActionType,\n} from './show-errors.action.type';\nimport { SubmitResponse } from '../../submit/response/submit-response.class';\nimport { XpsError } from '../../xps-error.interface';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class ShowErrorsActionCreator implements ActionCreator {\n public type: ShowErrorsActionType = 'show_errors';\n public data!: ShowErrorsActionData;\n\n public getActionData(errors: XpsError[]): ShowErrorsAction {\n return {\n type: this.type,\n data: { errors },\n };\n }\n\n public isSuitable(response: SubmitResponse): boolean {\n return Boolean(response.errors?.length);\n }\n}\n","import { AppError } from './app-error.class';\n\nexport class TerminalError extends AppError {\n public code!: string;\n\n public constructor(message: string, code: string) {\n super(message);\n\n this.code = code;\n }\n}\n","export enum StatusGroups {\n troubled = 'troubled',\n done = 'done',\n invoice = 'invoice',\n}\n","export enum StatusEnum {\n created = 'created',\n awaiting = 'awaiting',\n processing = 'processing',\n authorized = 'authorized',\n held = 'held',\n done = 'done',\n error = 'error',\n canceled = 'canceled',\n}\n","import { Status } from '../../status.interface';\nimport { XpsResponse, XpsStatus } from '../../../xps-response.interface';\nimport { TerminalError } from '../../../../exceptions-handling/errors/terminal-error.class';\nimport { StatusGroups } from '../../status-groups';\nimport { StatusEnum } from '../../status.enum';\n\nexport class StatusResponse {\n public readonly status!: Status;\n private readonly error?: { code: string; message: string };\n\n public constructor(parameters: {\n status: XpsStatus | null;\n errors: XpsResponse['errors'];\n form?: XpsResponse['form'];\n payment_method: XpsResponse['payment_method'];\n }) {\n if (parameters.errors?.[0]) {\n this.error = {\n code: parameters.errors[0].code.toString(),\n message: parameters.errors[0].message,\n };\n }\n\n if (!parameters.status) {\n throw new TerminalError(\n this.error?.message ?? '',\n this.error?.code.toString() ?? ''\n );\n }\n\n this.status = {\n statusState: parameters.status.statusData.stateText,\n email: parameters.status.statusData.email,\n webSocketUrl: parameters.status.statusData.webSocketChannelUrl,\n webSocketChannelName: parameters.status.statusData.webSocketChannelName,\n webSocketClientType: parameters.status.statusData.webSocketClientType,\n financeInfo: parameters.status.text.info,\n discount: parameters.status.text.info.discount\n ? Math.abs(\n Number.parseFloat(parameters.status.text.info.discount?.value ?? '')\n )\n : null,\n isCancelUser: parameters.status.isCancelUser,\n postMessageStatus: parameters.status.isCancelUser\n ? StatusGroups.troubled\n : parameters.status.group,\n virtualCurrencyAmount: parameters.status.statusData.out,\n backUrlSettings: {\n backUrl: parameters.status.text.backurl,\n backUrlAction: parameters.status.text.backurl_action,\n backUrlCaption: parameters.status.text.backurl_caption,\n returnRegion: parameters.status.return_region,\n },\n additionalBackButton: this.getAdditionalBackButton(parameters.status),\n group: parameters.status.group,\n needToCheck: parameters.status.needToCheck,\n autoRedirect: parameters.status.autoredirect,\n statusMessage: parameters.status.text.state,\n userId: parameters.status.statusData.v1,\n invoice: parameters.status.statusData.invoice,\n pid: parameters.status.statusData.pid,\n projectAmount: this.getProjectAmount(parameters.status),\n titleClass: parameters.status.title_class,\n paymentCountryIso: parameters.status.statusData.payment_country_iso,\n order: parameters.status.text.order,\n };\n\n this.status.autoCancellation =\n parameters.payment_method?.auto_cancellation !== false;\n\n if (parameters.form) {\n this.status.userReturnStatus = this.getUserReturnStatus(parameters.form);\n }\n\n if (\n this.status.statusState === StatusEnum.done ||\n this.status.statusState === StatusEnum.authorized\n ) {\n this.status.isSuccess = true;\n }\n\n if (\n this.status.statusState === StatusEnum.canceled ||\n this.status.isCancelUser\n ) {\n this.status.isCanceled = true;\n }\n }\n\n private getUserReturnStatus(form: XpsResponse['form']): string | undefined {\n const value = form['fix_userReturnStatus']?.value;\n if (value === 'undefined') return undefined;\n\n return value;\n }\n\n private getProjectAmount(status: XpsStatus): Status['projectAmount'] {\n if (!status.statusData.projectAmount) {\n return;\n }\n\n const [amount, currency] = status.statusData.projectAmount.split(' ');\n return {\n amount,\n currency,\n };\n }\n\n private getAdditionalBackButton(\n status: XpsStatus\n ): Status['additionalBackButton'] {\n if (!status.text.is_additional_back_url_enabled) {\n return {\n link: '',\n action: '',\n label: '',\n region: '',\n isEnabled: false,\n };\n }\n\n return {\n link: status.text.additional_back_url_link ?? '',\n action: status.text.additional_back_url_action ?? '',\n label: status.text.additional_back_url_label ?? '',\n region: status.additional_button_return_region ?? '',\n isEnabled: status.text.is_additional_back_url_enabled,\n };\n }\n}\n","import { ActionCreator } from '../action.interface';\nimport {\n StatusUpdatedAction,\n StatusUpdatedActionType,\n} from './status-updated.action.type';\nimport { StatusResponse } from '../../status/status-request/response/status-response.class';\nimport { Status } from '../../status/status.interface';\nimport { SavePaymentMethodStatus } from '../../status/save-payment-method-status/save-payment-method-status.enum';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class StatusUpdatedActionCreator implements ActionCreator {\n public type: StatusUpdatedActionType = 'status_updated';\n\n public getActionData({\n statusResponse,\n isSavePaymentMethodMode,\n savePaymentMethodStatus,\n }: {\n statusResponse: StatusResponse | Status;\n isSavePaymentMethodMode?: boolean;\n savePaymentMethodStatus?: SavePaymentMethodStatus;\n }): StatusUpdatedAction {\n let status: Status;\n\n if (statusResponse instanceof StatusResponse) {\n status = statusResponse.status;\n } else {\n status = statusResponse;\n }\n\n return {\n type: this.type,\n data: {\n statusState: status.statusState,\n invoice: status.invoice,\n isSuccess: status.isSuccess,\n isCanceled: status.isCanceled,\n group: status.group,\n isSavePaymentMethodMode: Boolean(isSavePaymentMethodMode),\n savePaymentMethodStatus,\n },\n };\n }\n\n public isSuitable(): boolean {\n return false;\n }\n}\n","import { ActionCreator } from '../action.interface';\nimport { ThreeDsAction, ThreeDsActionType } from './three-ds.action.type';\nimport { StatusChallenge } from '../../three-ds/three-ds-20/status-update.interface';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class ThreeDsActionCreator implements ActionCreator {\n public type: ThreeDsActionType = '3DS';\n\n public getActionData(actionData: StatusChallenge): ThreeDsAction {\n return {\n type: this.type,\n data: actionData,\n };\n }\n\n public isSuitable(): boolean {\n return false;\n }\n}\n","export const googlePayPid = 3431;\n","import { SubmitResponse } from '../../submit/response/submit-response.class';\nimport { ActionCreator } from '../action.interface';\nimport {\n SpecialButtonAction,\n SpecialButtonActionType,\n} from './special-button.action.type';\nimport { XpsCommand } from '../../xps-comand.enum';\nimport { Injectable } from '@angular/core';\nimport { googlePayPid } from '../../../sdk-payment-systems/sdk-payment-methods.const';\n\n@Injectable()\nexport class SpecialButtonActionCreator implements ActionCreator {\n public type: SpecialButtonActionType = 'special_button';\n private readonly pids: number[] = [googlePayPid];\n private readonly sdkPaymentMethodsName = new Map<number, string>([\n [googlePayPid, 'google-pay'],\n ]);\n\n public getActionData(submitResponse: SubmitResponse): SpecialButtonAction {\n return {\n type: this.type,\n data: {\n errors: submitResponse.errors,\n messages: submitResponse.messages,\n buttonName: this.getPaymentMethodName(submitResponse.pid),\n },\n };\n }\n\n public isSuitable(response: SubmitResponse): boolean {\n return (\n response.currentCommand === XpsCommand.checkout &&\n Boolean(response.parameters.checkout) &&\n this.pids.includes(response.pid)\n );\n }\n\n private getPaymentMethodName(pid: number): string {\n const buttonName = this.sdkPaymentMethodsName.get(pid);\n\n if (!buttonName) {\n throw new Error('Special button not found');\n }\n\n return buttonName as string;\n }\n}\n","import { SubmitResponse } from '../../submit/response/submit-response.class';\nimport { ActionCreator } from '../action.interface';\nimport { Injectable } from '@angular/core';\nimport {\n ShowQrCodeAction,\n ShowQrCodeActionType,\n} from './show-qr-code.action.type';\n\n@Injectable()\nexport class ShowQrCodeActionCreator implements ActionCreator {\n public readonly type: ShowQrCodeActionType = 'show_qr_code';\n\n public getActionData(response: SubmitResponse): ShowQrCodeAction {\n const submitButtonText = response.parameters.buyData.value;\n return {\n type: this.type,\n data: {\n submitButtonText,\n },\n };\n }\n\n public isSuitable(response: SubmitResponse): boolean {\n return Boolean(response.parameters?.form?.qr);\n }\n}\n","import { SubmitResponse } from '../../submit/response/submit-response.class';\nimport { ActionCreator } from '../action.interface';\nimport { XpsCommand } from '../../xps-comand.enum';\nimport { Injectable } from '@angular/core';\nimport {\n ShowMobilePaymentScreenAction,\n ShowMobilePaymentScreenActionType,\n} from './show-mobile-payment-screen.action.type';\n\n@Injectable()\nexport class ShowMobilePaymentScreenActionCreator implements ActionCreator {\n public type: ShowMobilePaymentScreenActionType = 'show_mobile_payment_screen';\n\n public getActionData(\n response: SubmitResponse\n ): ShowMobilePaymentScreenAction {\n const submitButtonText = response.parameters.buyData.value;\n return {\n type: this.type,\n data: {\n submitButtonText,\n },\n };\n }\n\n public isSuitable(response: SubmitResponse): boolean {\n return response.currentCommand === XpsCommand.create;\n }\n}\n","import { InjectionToken, ProviderToken } from '@angular/core';\nimport { ActionCreator } from './action.interface';\nimport { RedirectActionCreator } from './redirect/redirect.action.class';\nimport { ShowFieldsActionCreator } from './show-fields/show-fields.action.class';\nimport { CheckStatusActionCreator } from './check-status/check-status.action.class';\nimport { ShowErrorsActionCreator } from './show-errors/show-errors.action.class';\nimport { StatusUpdatedActionCreator } from './status-updated/status-updated.action.class';\nimport { ThreeDsActionCreator } from './three-ds/three-ds.action.class';\nimport { SpecialButtonActionCreator } from './special-button/special-button.action.class';\nimport { ShowQrCodeActionCreator } from './show-qr-code/show-qr-code.action.class';\nimport { ShowMobilePaymentScreenActionCreator } from './show-mobile-payment-screen/show-mobile-payment-screen.action.class';\n\nexport type NextActionTokens = Array<ProviderToken<ActionCreator>>;\n\nexport const nextActionsToken = new InjectionToken<ActionCreator>('Action');\n\nexport const nextActions: NextActionTokens = [\n ShowFieldsActionCreator,\n CheckStatusActionCreator,\n SpecialButtonActionCreator,\n ShowQrCodeActionCreator,\n RedirectActionCreator,\n ShowMobilePaymentScreenActionCreator,\n];\n\nexport const flowUpdateNextActions: NextActionTokens = [\n ShowErrorsActionCreator,\n StatusUpdatedActionCreator,\n ThreeDsActionCreator,\n];\n","import { Inject, Injectable, Injector, ProviderToken } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { NextAction } from './next-action.interface';\nimport { SubmitResponse } from '../submit/response/submit-response.class';\nimport { nextActionsToken, NextActionTokens } from './next-actions';\nimport { ActionCreator } from './action.interface';\nimport { ShowErrorsActionCreator } from './show-errors/show-errors.action.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NextActionService {\n private readonly flowUpdatesSubject = new Subject<NextAction>();\n\n private readonly nextActionsList: ActionCreator[] = [];\n\n public get flowUpdates$(): Observable<NextAction> {\n return this.flowUpdatesSubject.asObservable();\n }\n\n public constructor(\n @Inject(nextActionsToken)\n private readonly nextActionTokens: NextActionTokens,\n private readonly injector: Injector,\n private readonly showErrorsActionCreator: ShowErrorsActionCreator\n ) {\n this.fillNextActionsList();\n }\n\n public getNextAction(submitResponse: SubmitResponse): NextAction | null {\n if (submitResponse.errors?.length) {\n this.emitFlowUpdates(\n this.showErrorsActionCreator.getActionData(submitResponse.errors)\n );\n }\n\n if (!submitResponse.currentCommand) {\n return null;\n }\n\n const nextAction = this.findNextAction(submitResponse);\n\n if (nextAction) {\n return nextAction.getActionData(submitResponse);\n }\n\n throw new Error('Next action is undefined.');\n }\n\n public emitFlowUpdates(action: NextAction): void {\n this.flowUpdatesSubject.next(action);\n }\n\n private fillNextActionsList(): void {\n this.nextActionTokens.forEach(\n (nextAction: ProviderToken<ActionCreator>) => {\n const item = this.injector.get<ActionCreator>(nextAction);\n this.nextActionsList.push(item);\n }\n );\n }\n\n private findNextAction(\n submitResponse: SubmitResponse\n ): ActionCreator | undefined {\n const actionType = this.nextActionsList.find(\n (nextAction: ActionCreator) => {\n return nextAction.isSuitable(submitResponse);\n }\n );\n\n if (!actionType) {\n return;\n }\n\n return actionType;\n }\n}\n","/* eslint-disable @typescript-eslint/no-magic-numbers */\nexport const cardNumberSanctionErrorCodes = [\n 2034, 2035, 5027, 5024, 5025, 2036,\n];\n","import { FieldNames } from '../payment/field-names.enum';\nimport { cardNumberSanctionErrorCodes } from './card-number-sanction-error-codes.const';\n\nexport const fieldSpecialErrorsMap = [\n {\n errorCodes: new Set(cardNumberSanctionErrorCodes),\n fieldName: FieldNames.cardNumber,\n },\n];\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'unescapeHtml',\n})\nexport class UnescapeHtmlPipe implements PipeTransform {\n public transform(html?: string): string {\n if (!html) {\n return '';\n }\n\n if (html.includes('&gt')) {\n const messageDocument = new DOMParser().parseFromString(\n html,\n 'text/html'\n );\n return messageDocument?.documentElement?.textContent ?? '';\n }\n\n return html;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { UnescapeHtmlPipe } from '../../shared/pipes/unescape-html/unescape-html.pipe';\nimport { XpsError } from '../payment/xps-error.interface';\nimport { XpsResponse } from '../payment/xps-response.interface';\nimport { fieldSpecialErrorsMap } from './field-special-errors-map.const';\n\n@Injectable({ providedIn: 'root' })\nexport class XpsResponseErrorsMappingService {\n public constructor(private readonly unescapeHtmlPipe: UnescapeHtmlPipe) {}\n\n public mapErrors(response: XpsResponse): XpsResponse {\n if (!response.errors?.length) {\n return response;\n }\n\n let mappedErrors = this.mapFieldSpecialErrors(response.errors);\n mappedErrors = this.unescapeErrorsText(mappedErrors);\n\n return {\n ...response,\n errors: mappedErrors,\n };\n }\n\n private mapFieldSpecialErrors(errors: XpsError[]): XpsError[] {\n return errors.map((error) => {\n if (!error.element_name) {\n const errorMap = fieldSpecialErrorsMap.find((map) =>\n map.errorCodes.has(error.code)\n );\n\n if (errorMap) {\n return {\n ...error,\n element_name: errorMap.fieldName,\n };\n }\n }\n\n return error;\n });\n }\n\n private unescapeErrorsText(errors: XpsError[]): XpsError[] {\n return errors.map((error) => {\n if (!error.message) {\n return error;\n }\n\n return {\n ...error,\n message: this.unescapeHtmlPipe.transform(error.message),\n };\n });\n }\n}\n","export enum ErrorTags {\n APP = 'appError',\n HTTP = 'httpError',\n JS = 'jsError',\n WS = 'webSocket',\n ENCRYPT = 'encrypt',\n APPLEPAY = 'applepay',\n HEADLESS_UI = 'headlessUi',\n GOOGLEPAY = 'googlepay',\n PAYTM = 'paytm',\n}\n","import { ErrorTags } from './elk-error-types.enum';\nimport { AdditionalInfo } from '../elk/additional-info.interface';\n\nexport class TaggedError extends Error {\n public childTag!: ErrorTags;\n public trace!: string;\n public tags: ErrorTags[] = [];\n public additionalInfo!: AdditionalInfo;\n\n private readonly parentTag: ErrorTags = ErrorTags.HEADLESS_UI;\n\n public constructor(message: string, tags?: ErrorTags[]) {\n super(message);\n\n this.tags = this.childTag\n ? [this.parentTag, this.childTag]\n : [this.parentTag];\n\n if (tags) {\n const newTags = tags.filter(\n (t, i, arr) => !this.tags.includes(t) && arr.indexOf(t) == i\n );\n this.tags = [...this.tags, ...newTags];\n }\n }\n}\n","import { TaggedError } from './tagged-error.class';\nimport { ErrorTags } from './elk-error-types.enum';\n\nexport class EncryptCreditCardError extends TaggedError {\n public constructor(message: string, tags?: ErrorTags[]) {\n tags = tags ? [...tags, ErrorTags.ENCRYPT] : [ErrorTags.ENCRYPT];\n\n super(message, tags);\n }\n}\n","export const fourBlockMask = '9999 9999 9999 9999';\n","export enum CreditCardTypes {\n DEFAULT = '0',\n VISA = '1',\n MASTERCARD = '2',\n MAESTRO = '3',\n AMERICAN_EXPRESS = '4',\n DINERS_CLUBS = '5',\n DISCOVER = '6',\n JCB = '9',\n DANKORT = '11',\n HIPERCARD = '12',\n ELO = '13',\n AURA = '14',\n NARANJA = '15',\n MIR = '16',\n CHINA_UNION_PAY = '17',\n POSTEPAY = '18',\n}\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { fourBlockMask } from '../four-block-mask.const';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const visa: CreditCardSettings = {\n id: CreditCardTypes.VISA,\n minLength: 13,\n maxLength: 16,\n iconName: 'visa',\n mask: fourBlockMask,\n checkNumber(number: string): boolean {\n return number.startsWith('4');\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { fourBlockMask } from '../four-block-mask.const';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const mastercard: CreditCardSettings = {\n id: CreditCardTypes.MASTERCARD,\n minLength: 16,\n maxLength: 16,\n iconName: 'mastercard',\n mask: fourBlockMask,\n checkNumber(number: string): boolean {\n const subLength = 6;\n const cardNumberSub = number.substring(0, subLength);\n return (\n new RegExp(/^5[1-5]/).test(number) ||\n (cardNumberSub >= '222100' && cardNumberSub <= '272099')\n );\n },\n};\n","export const defaultMask = '9999 9999 9999 9999 999';\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { defaultMask } from '../default-mask.const';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const maestro: CreditCardSettings = {\n id: CreditCardTypes.MAESTRO,\n minLength: 12,\n maxLength: 19,\n iconName: 'maestro',\n mask: defaultMask,\n checkNumber(number: string): boolean {\n return new RegExp(\n /^(5018)|^(5020)|^(5038)|^(5893)|^(6304)|^(6759)|^(6761)|^(6762)|^(6763)|^(0604)|^(6706)|^(6771)|^(6709)/\n ).test(number);\n },\n maxCvvLength: 3,\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const americanExpress: CreditCardSettings = {\n id: CreditCardTypes.AMERICAN_EXPRESS,\n minLength: 15,\n maxLength: 15,\n iconName: 'american-express',\n mask: '9999 999999 99999',\n checkNumber(number: string): boolean {\n return new RegExp(/^(34)|^(37)/).test(number);\n },\n maxCvvLength: 4,\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const dinersClubs: CreditCardSettings = {\n id: CreditCardTypes.DINERS_CLUBS,\n minLength: 14,\n maxLength: 14,\n iconName: 'dinersclub',\n mask: '9999 9999 9999 99',\n checkNumber(number: string): boolean {\n const regex = /^(36[0-9]|3(?:0[0-59]|[68][0-9])[0-9])/;\n return regex.test(number);\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { CreditCardTypes } from '../credit-card-types.enum';\nimport { defaultMask } from '../default-mask.const';\n\nexport const discover: CreditCardSettings = {\n id: CreditCardTypes.DISCOVER,\n minLength: 16,\n maxLength: 19,\n iconName: 'discover',\n mask: defaultMask,\n checkNumber(number: string): boolean {\n return new RegExp(\n /^(6011)|^(622(1(2[6-9]|[3-9][0-9])|[2-8][0-9]{2}|9([01][0-9]|2[0-5])))|^(64[4-9])|^65/\n ).test(number);\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { fourBlockMask } from '../four-block-mask.const';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const jcb: CreditCardSettings = {\n id: CreditCardTypes.JCB,\n minLength: 15,\n maxLength: 16,\n iconName: 'jcb',\n mask: fourBlockMask,\n checkNumber(number: string): boolean {\n return new RegExp(/^35(2[89]|[3-8][0-9])/).test(number);\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { fourBlockMask } from '../four-block-mask.const';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const dankort: CreditCardSettings = {\n id: CreditCardTypes.DANKORT,\n minLength: 16,\n maxLength: 16,\n iconName: 'dankort',\n mask: fourBlockMask,\n checkNumber(number: string): boolean {\n const subLength = 4;\n const cardNumberSub = number.substring(0, subLength);\n return cardNumberSub === '5019';\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { defaultMask } from '../default-mask.const';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const hipercard: CreditCardSettings = {\n id: CreditCardTypes.HIPERCARD,\n minLength: 13,\n maxLength: 19,\n iconName: 'hipercard',\n mask: defaultMask,\n checkNumber(number: string): boolean {\n return new RegExp(/^((606282|637095|637568)[0-9]|38[0-9]{14,17})/).test(\n number\n );\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { CreditCardTypes } from '../credit-card-types.enum';\nimport { defaultMask } from '../default-mask.const';\n\nexport const elo: CreditCardSettings = {\n id: CreditCardTypes.ELO,\n minLength: 16,\n maxLength: 19,\n iconName: 'elo',\n mask: defaultMask,\n checkNumber(number: string): boolean {\n return new RegExp(\n /^(40117[8-9]|431274|438935|451416|457393|45763[1-2]|506(699|7[0-6][0-9]|77[0-8])|509\\d{3}|504175|627780|636297|636368|65003[1-3]|6500(3[5-9]|4[0-9]|5[0-1])|6504(0[5-9]|[1-3][0-9])|650(4[8-9][0-9]|5[0-2][0-9]|53[0-8])|6505(4[1-9]|[5-8][0-9]|9[0-8])|6507(0[0-9]|1[0-8])|65072[0-7]|6509(0[1-9]|1[0-9]|20)|6516(5[2-9]|[6-7][0-9])|6550([0-1][0-9]|2[1-9]|[3-4][0-9]|5[0-8]))/\n ).test(number);\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { defaultMask } from '../default-mask.const';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const aura: CreditCardSettings = {\n id: CreditCardTypes.AURA,\n minLength: 16,\n maxLength: 19,\n iconName: 'aura',\n mask: defaultMask,\n checkNumber(number: string): boolean {\n const subLength = 8;\n const cardNumberSub = number.substring(0, subLength);\n return ['50786000', '50786018', '50786019'].includes(cardNumberSub);\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { defaultMask } from '../default-mask.const';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const naranja: CreditCardSettings = {\n id: CreditCardTypes.NARANJA,\n minLength: 12,\n maxLength: 19,\n iconName: 'naranja',\n mask: defaultMask,\n checkNumber(number: string): boolean {\n const subLength = 6;\n const cardNumberSub = number.substring(0, subLength);\n return cardNumberSub === '589562';\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { defaultMask } from '../default-mask.const';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const mir: CreditCardSettings = {\n id: CreditCardTypes.MIR,\n minLength: 16,\n maxLength: 16,\n iconName: 'mir',\n mask: defaultMask,\n checkNumber(number: string): boolean {\n const subLength = 4;\n const cardNumberSub = number.substring(0, subLength);\n return cardNumberSub >= '2200' && cardNumberSub <= '2204';\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const chinaUnionPay: CreditCardSettings = {\n id: CreditCardTypes.CHINA_UNION_PAY,\n minLength: 16,\n maxLength: 19,\n iconName: 'unionpay',\n mask: '999 9999 9999 99999999',\n checkNumber(number: string): boolean {\n return number.startsWith('62');\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { CreditCardTypes } from '../credit-card-types.enum';\nimport { defaultMask } from '../default-mask.const';\n\nexport const defaultCard: CreditCardSettings = {\n id: CreditCardTypes.DEFAULT,\n minLength: 12,\n maxLength: 19,\n iconName: null,\n mask: defaultMask,\n checkNumber(): boolean {\n return false;\n },\n};\n","import { CreditCardSettings } from '../credit-card-settings.interface';\nimport { CreditCardTypes } from '../credit-card-types.enum';\n\nexport const postePay: CreditCardSettings = {\n id: CreditCardTypes.POSTEPAY,\n minLength: 12,\n maxLength: 19,\n iconName: 'poste_pay',\n mask: '9999 9999 9999 9999 999',\n checkNumber(number: string): boolean {\n const regex =\n /^(5018)|^(5020)|^(5038)|^(5893)|^(6304)|^(6759)|^(6761)|^(6762)|^(6763)|^(0604)|^(6706)|^(6771)|^(6709)/;\n return regex.test(number);\n },\n};\n","import { visa } from './types/visa';\nimport { mastercard } from './types/mastercard';\nimport { maestro } from './types/maestro';\nimport { americanExpress } from './types/american-express';\nimport { dinersClubs } from './types/diners-clubs';\nimport { discover } from './types/discover';\nimport { jcb } from './types/jcb';\nimport { dankort } from './types/dankort';\nimport { hipercard } from './types/hipercard';\nimport { elo } from './types/elo';\nimport { aura } from './types/aura';\nimport { naranja } from './types/naranja';\nimport { mir } from './types/mir';\nimport { chinaUnionPay } from './types/china-union-pay';\nimport { defaultCard } from './types/default-card';\nimport { CreditCardSettings } from './credit-card-settings.interface';\nimport { postePay } from './types/postepay';\n\n/**\n * order does matter\n * settings with more specific pattern should be placed above\n * Example:\n * - 12*\n * - 12\n * - 1\n * \"12*\" pattern should be checked first, otherwise pattern \"1\" will be taken\n * before \"12*\" checked\n */\nexport const orderedCardSettings: CreditCardSettings[] = [\n aura,\n naranja,\n maestro,\n postePay,\n elo,\n discover,\n dankort,\n hipercard,\n mir,\n jcb,\n dinersClubs,\n americanExpress,\n mastercard,\n chinaUnionPay,\n visa,\n defaultCard,\n];\n","import { CreditCardTypes } from './credit-card-types.enum';\nimport { visa } from './types/visa';\nimport { mastercard } from './types/mastercard';\nimport { maestro } from './types/maestro';\nimport { americanExpress } from './types/american-express';\nimport { dinersClubs } from './types/diners-clubs';\nimport { discover } from './types/discover';\nimport { jcb } from './types/jcb';\nimport { dankort } from './types/dankort';\nimport { hipercard } from './types/hipercard';\nimport { elo } from './types/elo';\nimport { aura } from './types/aura';\nimport { naranja } from './types/naranja';\nimport { mir } from './types/mir';\nimport { chinaUnionPay } from './types/china-union-pay';\nimport { defaultCard } from './types/default-card';\nimport { CreditCardSettings } from './credit-card-settings.interface';\nimport { postePay } from './types/postepay';\n\nexport const creditCardsMap: {\n [key in CreditCardTypes]: CreditCardSettings;\n} = {\n [CreditCardTypes.DEFAULT]: defaultCard,\n [CreditCardTypes.VISA]: visa,\n [CreditCardTypes.MASTERCARD]: mastercard,\n [CreditCardTypes.MAESTRO]: maestro,\n [CreditCardTypes.AMERICAN_EXPRESS]: americanExpress,\n [CreditCardTypes.DINERS_CLUBS]: dinersClubs,\n [CreditCardTypes.DISCOVER]: discover,\n [CreditCardTypes.JCB]: jcb,\n [CreditCardTypes.DANKORT]: dankort,\n [CreditCardTypes.HIPERCARD]: hipercard,\n [CreditCardTypes.ELO]: elo,\n [CreditCardTypes.AURA]: aura,\n [CreditCardTypes.NARANJA]: naranja,\n [CreditCardTypes.MIR]: mir,\n [CreditCardTypes.CHINA_UNION_PAY]: chinaUnionPay,\n [CreditCardTypes.POSTEPAY]: postePay,\n};\n","import { Injectable } from '@angular/core';\nimport { CreditCardTypes } from './credit-card-types.enum';\nimport { orderedCardSettings } from './ordered-cards-settings.const';\nimport { CreditCardSettings } from './credit-card-settings.interface';\nimport { creditCardsMap } from './credit-cards-map.const';\nimport { defaultCard } from './types/default-card';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CreditCardService {\n public getBinNumber(cardNumber: string): string {\n const binNumberLength = 6;\n return cardNumber.replace(/\\s+/g, '').substring(0, binNumberLength);\n }\n\n public getAccountSuffix(cardNumber: string): string {\n const accountSuffixLength = 4;\n return cardNumber\n .replace(/\\s+/g, '')\n .substring(cardNumber.length - accountSuffixLength);\n }\n\n public getTypeByNumber(cardNumber: string): CreditCardTypes {\n cardNumber = cardNumber.replace(/\\s+/g, '');\n\n const cardSettings = orderedCardSettings.find((settings) => {\n const isNumberMatched = settings.checkNumber(cardNumber);\n return isNumberMatched ? settings.id : false;\n });\n\n return cardSettings ? cardSettings.id : defaultCard.id;\n }\n\n public getCreditCardSettings(cardType: CreditCardTypes): CreditCardSettings {\n const creditCard = creditCardsMap[cardType];\n\n if (!creditCard) {\n return defaultCard;\n }\n\n return creditCard;\n }\n}\n","import JSEncrypt from 'jsencrypt';\nimport { Injectable } from '@angular/core';\nimport { EncryptCreditCardError } from '../exceptions-handling/errors/encrypt-card-error';\nimport { XpsApiPartRequest } from '../payment/xps-api-part-request.abstract';\nimport { CreditCardService } from '../credit-card/credit-card.service';\nimport { EncryptedCard } from './encrypted-card.interface';\nimport { OpenCard } from './open-card.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class EncryptCreditCardService {\n private readonly jsEncrypt!: JSEncrypt;\n\n private readonly secureFieldNames: Array<`xps_${string}`> = [\n 'xps_card_number',\n 'xps_cvv',\n 'xps_extra_cvv',\n 'xps_card_year',\n 'xps_card_month',\n ];\n\n public constructor(private readonly creditCardService: CreditCardService) {\n this.jsEncrypt = new JSEncrypt();\n }\n\n public setPublicKey(publicKey: string): void {\n this.jsEncrypt.setPublicKey(publicKey);\n }\n\n public encryptCreditCard<T extends XpsApiPartRequest>(\n request: XpsApiPartRequest\n ): T {\n if (request.xps_card_number) {\n const openCard: OpenCard = this.createOpenCard(request);\n request.xps_open_card = JSON.stringify(openCard);\n }\n\n const encryptedCard: EncryptedCard = this.createEncryptedCard(request);\n\n if (!request.xps_encrypted_card && JSON.stringify(encryptedCard) !== '{}') {\n request.xps_encrypted_card = this.encrypt(JSON.stringify(encryptedCard));\n }\n\n this.secureFieldNames.forEach((secureFieldName: `xps_${string}`) => {\n delete request[secureFieldName];\n });\n\n return request as T;\n }\n\n private encrypt(value: string): string {\n if (!this.jsEncrypt?.getPublicKey()) {\n throw new EncryptCreditCardError('Empty public key');\n }\n\n const encryptedValue = this.jsEncrypt.encrypt(value);\n\n if (!encryptedValue) {\n throw new EncryptCreditCardError(\n 'Encryption returns false instead of encrypted string'\n );\n }\n\n return encryptedValue;\n }\n\n private createEncryptedCard(request: XpsApiPartRequest): EncryptedCard {\n const encryptedCard: EncryptedCard = {\n card_number: request.xps_card_number as string,\n card_year: request.xps_card_year as string,\n card_month: request.xps_card_month as string,\n cvv: request.xps_cvv as string,\n };\n\n if (request.xps_extra_cvv) {\n encryptedCard.cvv = request.xps_extra_cvv as string;\n }\n\n return encryptedCard;\n }\n\n private createOpenCard(request: XpsApiPartRequest): OpenCard {\n return {\n card_bin: this.creditCardService.getBinNumber(\n request.xps_card_number as string\n ),\n card_suffix: this.creditCardService.getAccountSuffix(\n request.xps_card_number as string\n ),\n card_year: request.xps_card_year as string,\n card_month: request.xps_card_month as string,\n };\n }\n}\n","export const eventCategories = {\n withoutInvoice: 'withoutInvoice',\n withInvoice: 'withInvoice',\n} as const;\n","import { UserBehaviourEventName } from './user-behaviour-event-name.enum';\n\nexport const oneTimeAnalyticsEvents = new Set<string>([\n UserBehaviourEventName.showMethodHeader,\n]);\n","export enum EventParameterType {\n string = '0',\n int = '1',\n float = '2',\n bool = '3',\n intArray = '4',\n}\n","import { Inject, Injectable, isDevMode } from '@angular/core';\nimport { EventParameterType } from './event-parameter-types';\nimport { UserBehaviourEvent } from './user-behaviour-event.interface';\nimport { Purchase } from './purchase.type';\nimport { CreateEventMethodOptionsInterface } from '../user-behaviour-analytics.interface';\nimport { SettingsService } from '../../settings/settings.service';\nimport { UserAgentService } from '../../user-agent/user-agent.service';\nimport { ExtendedWindow } from '../../extended-window.interface';\nimport { Device } from '../../user-agent/device.enum';\nimport { windowToken } from '../../window.token';\nimport { UserSessionOptions } from '../user-session-options';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EventBuilderService {\n public constructor(\n private readonly settingsService: SettingsService,\n private readonly userAgentService: UserAgentService,\n @Inject(windowToken)\n private readonly window: ExtendedWindow\n ) {}\n\n public createEvent(\n options: CreateEventMethodOptionsInterface,\n userSessionOptions: UserSessionOptions\n ): UserBehaviourEvent {\n return {\n action: options.action,\n type: options.type,\n value: this.convertToEventParameterType(\n options.value,\n options.valueType ?? EventParameterType.string\n ),\n state: options.state,\n date: this.getDate(options.date),\n milliseconds: options.date.getTime(),\n timezone: this.getTimezone(options.date),\n session_id:\n this.settingsService.unsafeUtilsResponse?.user?.session_id ?? null,\n referrer_url: this.window?.document?.referrer,\n project_id: this.convertToEventParameterType(\n this.settingsService.unsafeUtilsResponse?.project?.id,\n EventParameterType.int\n ),\n payment_country: this.convertToEventParameterType(\n options.invoice?.payment_country ??\n this.settingsService.unsafeUtilsResponse?.user?.country?.value,\n EventParameterType.string\n ),\n geotype_id: this.convertToEventParameterType(\n options.invoice?.geotype_id,\n EventParameterType.int\n ),\n instance_id: this.convertToEventParameterType(\n options.instanceId ??\n this.getPaymentMethodId(userSessionOptions.instanceId),\n EventParameterType.int\n ),\n payment_method_contr_id: this.convertToEventParameterType(\n options.invoice?.payment_method_contr_id,\n EventParameterType.int\n ),\n ps_type: this.convertToEventParameterType(\n options.invoice?.ps_type,\n EventParameterType.int\n ),\n is_pay_with_saved_method: this.convertToEventParameterType(\n userSessionOptions.isPayWithSavedMethod,\n EventParameterType.bool\n ),\n purchase_invoice_id: this.convertToEventParameterType(\n options.invoice?.purchase_invoice_id,\n EventParameterType.int\n ),\n purchase_external_id: this.convertToEventParameterType(\n this.settingsService.unsafeUtilsResponse?.purchase_external_id,\n EventParameterType.string\n ),\n purchase_type: this.settingsService.unsafeUtilsResponse?.purchase\n ?.purchase_type as Purchase,\n purchase_sum: this.convertToEventParameterType(\n options.invoice?.purchase_sum,\n EventParameterType.float\n ),\n purchase_currency: this.convertToEventParameterType(\n options.invoice?.purchase_currency,\n EventParameterType.string\n ),\n purchase_sku: this.convertToEventParameterType(\n options.invoice?.purchase_sku,\n EventParameterType.string\n ),\n purchase_digital_content_sku: null,\n purchase_description: this.convertToEventParameterType(\n options.invoice?.purchase_description,\n EventParameterType.string\n ),\n virtual_currency_amount: null, // TODO: add value\n digital_content_cart_id: this.convertToEventParameterType(\n options.invoice?.digital_content_cart_id,\n EventParameterType.int\n ),\n digital_good_cart_id: this.convertToEventParameterType(\n options.invoice?.digital_good_cart_id,\n EventParameterType.int\n ),\n coupon_code: this.convertToEventParameterType(\n userSessionOptions.couponCode,\n EventParameterType.string\n ),\n theme_version: this.userAgentService.isMobileDevice\n ? Device.mobile\n : Device.desktop,\n subscription_package_id: this.convertToEventParameterType(\n userSessionOptions.subscriptionPackageId,\n EventParameterType.int\n ),\n subscription_product_id: this.convertToEventParameterType(\n userSessionOptions.subscriptionProductId,\n EventParameterType.int\n ),\n subscription_recurrent_id: this.convertToEventParameterType(\n userSessionOptions.subscriptionRecurrentId,\n EventParameterType.int\n ),\n user_id: this.convertToEventParameterType(\n this.settingsService.unsafeUtilsResponse?.user?.requisites?.id,\n EventParameterType.string\n ),\n user_access_token: this.settingsService.token,\n user_name: this.convertToEventParameterType(\n this.settingsService.unsafeUtilsResponse?.user?.requisites?.v2,\n EventParameterType.string\n ),\n user_email: this.convertToEventParameterType(\n this.settingsService.unsafeUtilsResponse?.user?.email?.value,\n EventParameterType.string\n ),\n user_country: this.convertToEventParameterType(\n this.settingsService.unsafeUtilsResponse?.user?.country?.value,\n EventParameterType.string\n ),\n user_ip: this.convertToEventParameterType(\n this.settingsService.unsafeUtilsResponse?.user?.ip,\n EventParameterType.string\n ),\n user_mobile_operator_name: this.convertToEventParameterType(\n userSessionOptions.userMobileOperatorName,\n EventParameterType.string\n ),\n user_operation_system: this.userAgentService.platform,\n user_browser: this.userAgentService.browserDescription,\n user_browser_version: this.userAgentService.browserVersion,\n user_locale: this.convertToEventParameterType(\n this.settingsService.unsafeUtilsResponse?.user?.local,\n EventParameterType.string\n ),\n user_utm: this.convertToEventParameterType(\n this.settingsService.unsafeUtilsResponse?.user?.utm_parameters,\n EventParameterType.string\n ),\n xsolla_product_tag: this.convertToEventParameterType(\n this.settingsService.unsafeUtilsResponse?.xsolla_product_tag,\n EventParameterType.string\n ),\n experiment_id: null,\n is_test_session: +isDevMode(),\n babka_value: null,\n extra_value: this.convertToEventParameterType(\n options?.extraValue,\n EventParameterType.string\n ),\n is_subscription: this.convertToEventParameterType(\n this.isSubscription(),\n EventParameterType.bool\n ),\n is_iframe: this.convertToEventParameterType(\n this.window.parent !== this.window,\n EventParameterType.bool\n ),\n web3wallet: null, // TODO: add value\n dimension_1: this.convertToEventParameterType(\n options?.dimension1,\n EventParameterType.string\n ),\n dimension_2: this.convertToEventParameterType(\n options?.dimension2,\n EventParameterType.string\n ),\n dimension_3: this.convertToEventParameterType(\n options?.dimension3,\n EventParameterType.string\n ),\n dimension_4: this.convertToEventParameterType(\n options?.dimension4,\n EventParameterType.string\n ),\n dimension_5: this.convertToEventParameterType(\n options?.dimension5,\n EventParameterType.string\n ),\n client_version: 'Headless Checkout',\n };\n }\n\n private getDate(date: Date): string {\n const nullIndex = 0;\n return date.toISOString().replace('T', ' ').replace('Z', '').split('.')[\n nullIndex\n ];\n }\n\n private getTimezone(date: Date): string {\n const hour = 60;\n const nullHour = 0;\n const hourOffset = -date.getTimezoneOffset() / hour;\n\n if (hourOffset === nullHour) {\n return '0';\n }\n\n return hourOffset > nullHour ? `+${hourOffset}` : hourOffset.toString();\n }\n\n private convertToEventParameterType(\n value: boolean | number | number[] | string | null | undefined,\n type: EventParameterType\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): any | null {\n if (value === null || value === undefined) {\n return null;\n }\n\n if (typeof value === 'boolean') {\n value = value ? 1 : 0;\n }\n\n switch (type) {\n case EventParameterType.string:\n return String(value);\n case EventParameterType.int:\n value = parseInt(String(value), 10);\n return isNaN(value) ? 0 : value;\n case EventParameterType.intArray:\n return Array.isArray(value) ? value : [];\n case EventParameterType.float:\n value = parseFloat(String(value));\n return isNaN(value) ? 0 : value;\n case EventParameterType.bool:\n return value ? 1 : 0;\n }\n }\n\n private convertValueForPostMessage(\n value: string | number[] | null\n ): string | null {\n if (value === null || value === undefined) {\n return null;\n }\n return String(value);\n }\n\n private isSubscription(): boolean {\n return (\n this.settingsService.unsafeUtilsResponse?.purchase?.purchase_type ===\n 'subscription'\n );\n }\n\n private getPaymentMethodId(instanceId: number | null): number | null {\n return (\n this.settingsService.unsafeUtilsResponse?.settings?.payment_system ??\n instanceId\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { userBehaviourEventTypes } from './user-behaviour-event/user-behaviour-event-types';\nimport { eventCategories } from './user-behaviour-event/user-behaviour-event-categories';\nimport {\n SendEventMethodOptionsInterface,\n CreateEventMethodOptionsInterface,\n} from './user-behaviour-analytics.interface';\nimport { EventBuilderService } from './event-builder/event-builder.service';\nimport { UserBehaviourEvent } from './event-builder/user-behaviour-event.interface';\nimport { Subject } from 'rxjs';\nimport { Invoice } from './event-builder/invoice.interface';\nimport { UserBehaviourEventName } from './user-behaviour-event-name.enum';\nimport { oneTimeAnalyticsEvents } from './one-time-analytics-events.const';\nimport { SettingsService } from '../settings/settings.service';\nimport { Field } from '../payment/field.interface';\nimport { XpsResponse } from '../payment/xps-response.interface';\nimport { UserSessionOptions } from './user-session-options';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UserBehaviourAnalyticsService {\n public set isPayWithSavedMethod(value: boolean) {\n this.userSessionOptions.isPayWithSavedMethod = value;\n }\n\n public set subscriptionPackageId(value: number) {\n this.userSessionOptions.subscriptionPackageId = value;\n }\n\n public set couponCode(value: string) {\n this.userSessionOptions.couponCode = value;\n }\n\n public set paymentStatus(value: string) {\n this.userSessionOptions.paymentStatus = value;\n }\n\n public get sessionOptions(): UserSessionOptions {\n return this.userSessionOptions;\n }\n\n private get purchaseType(): string | null {\n return this.settingsService.unsafeUtilsResponse?.purchase?.purchase_type\n ? 'subscription'\n : null;\n }\n\n private readonly apiUrl: string =\n 'https://datagather.xsolla.com/paystation-user-sessions';\n\n private readonly _events$ = new Subject<UserBehaviourEvent>();\n\n private readonly userSessionOptions: UserSessionOptions = {\n invoice: null,\n instanceId: null,\n subscriptionRecurrentId: null,\n userMobileOperatorName: null,\n isPayWithSavedMethod: false,\n subscriptionPackageId: null,\n subscriptionProductId: null,\n couponCode: null,\n totalSum: null,\n totalCurrency: null,\n paymentInstanceName: null,\n paymentStatus: null,\n };\n\n private readonly sentEvents = new Set();\n\n public constructor(\n private readonly http: HttpClient,\n private readonly eventBuilderService: EventBuilderService,\n private readonly settingsService: SettingsService\n ) {}\n\n public init(): undefined | void {\n this.setPid(\n this.settingsService.unsafeUtilsResponse?.purchase?.payment_system?.id\n );\n this.onOpenPayStation();\n }\n\n public setPid(pid?: number | null): void {\n if (pid) {\n this.userSessionOptions.instanceId = pid;\n }\n }\n\n public fillUserSession(paymentForm: {\n fields: Field[];\n subscriptionRecurrentId?: number;\n userSession?: Invoice;\n pid: XpsResponse['pid'];\n errors: XpsResponse['errors'];\n summary: XpsResponse['summary'];\n title: string;\n }): void {\n if (paymentForm.subscriptionRecurrentId) {\n this.userSessionOptions.subscriptionRecurrentId =\n paymentForm.subscriptionRecurrentId;\n }\n\n const operator: Field | undefined = paymentForm.fields.find(\n (field: Field) => field.name === 'operator'\n );\n if (operator) {\n this.userSessionOptions.userMobileOperatorName = operator.value;\n }\n\n if (paymentForm.pid) {\n this.setPid(paymentForm.pid);\n }\n\n if (paymentForm.userSession) {\n this.userSessionOptions.invoice = paymentForm.userSession;\n const createInvoiceOptions = {\n eventCategory: eventCategories.withInvoice,\n };\n this.send(\n 'create-invoice',\n userBehaviourEventTypes.manual,\n createInvoiceOptions\n );\n\n if (paymentForm.errors?.length) {\n this.resetInvoice();\n }\n }\n\n const total = paymentForm?.summary?.finance?.total;\n if (total) {\n this.userSessionOptions.totalSum = total.amount;\n this.userSessionOptions.totalCurrency = total.currency;\n }\n\n if (paymentForm.title) {\n this.userSessionOptions.paymentInstanceName = paymentForm.title;\n }\n }\n\n public send(\n action: string,\n type: keyof typeof userBehaviourEventTypes,\n options?: SendEventMethodOptionsInterface\n ): void {\n if (oneTimeAnalyticsEvents.has(action) && this.sentEvents.has(action)) {\n return;\n }\n\n const date = new Date();\n const invoice =\n options?.eventCategory === eventCategories.withInvoice\n ? this.userSessionOptions.invoice\n : null;\n const eventOptions: CreateEventMethodOptionsInterface = {\n action,\n type,\n value: options?.value ?? null,\n valueType: options?.valueType ?? null,\n date,\n invoice,\n state: '',\n extraValue: options?.extraValue ?? null,\n purchase_type: options?.purchaseType ?? null,\n instanceId: options?.instanceId ?? null,\n dimension1: options?.dimension1 ?? null,\n dimension2: options?.dimension2 ?? null,\n dimension3: options?.dimension3 ?? null,\n dimension4: options?.dimension4 ?? null,\n dimension5: options?.dimension5 ?? null,\n };\n\n const sendEvent = (): void => {\n this.sentEvents.add(action);\n const event: UserBehaviourEvent = this.eventBuilderService.createEvent(\n eventOptions,\n this.userSessionOptions\n );\n this._events$.next(event);\n const requestBody = JSON.stringify(event);\n if (navigator.sendBeacon) {\n navigator.sendBeacon(this.apiUrl, requestBody);\n } else {\n void this.http.post(this.apiUrl, requestBody).toPromise();\n }\n };\n\n if (options?.syncRequest) {\n sendEvent();\n return;\n }\n\n setTimeout(() => sendEvent());\n }\n\n private onOpenPayStation(): void {\n this.send(\n UserBehaviourEventName.openPaystation,\n userBehaviourEventTypes.open,\n {\n value: null,\n purchaseType: this.purchaseType,\n }\n );\n }\n\n private resetInvoice(): void {\n this.userSessionOptions.invoice = null;\n }\n\n private resetPid(): void {\n this.userSessionOptions.instanceId = null;\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { CountryService } from '../../country/country.service';\nimport { ResponseError } from '../../exceptions-handling/errors/response-error.class';\nimport { EncryptCreditCardService } from '../../encrypt-credit-card/encrypt-credit-card.service';\nimport { SettingsService } from '../../settings/settings.service';\nimport { PaymentConfig } from '../payment-config.interface';\nimport { NextActionService } from '../actions/next-action.service';\nimport { ShowErrorsActionCreator } from '../actions/show-errors/show-errors.action.class';\nimport { XpsApiService } from '../xps-api/xps-api.service';\nimport { Field } from '../field.interface';\nimport { PaymentForm } from '../payment-form.interface';\nimport {\n InitializeResponseFactory,\n initializeResponseFactoryToken,\n} from './response/initialize-response.token';\nimport { InitializeResponse } from './response/initialize-response.class';\nimport { InitializeRequestParams } from './initialize-request-params.interface';\nimport { XpsResponseErrorsMappingService } from '../../errors-mapping/xps-response-errors-mapping.service';\nimport { XpsBoolean } from '../../xps-boolean.enum';\nimport { UserBehaviourEventName } from '../../user-behaviour-analytics/user-behaviour-event-name.enum';\nimport { userBehaviourEventTypes } from '../../user-behaviour-analytics/user-behaviour-event/user-behaviour-event-types';\nimport { UserBehaviourAnalyticsService } from '../../user-behaviour-analytics/user-behaviour-analytics.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class InitializeService {\n public constructor(\n @Inject(initializeResponseFactoryToken)\n protected readonly responseFactory: InitializeResponseFactory,\n private readonly xpsApiService: XpsApiService,\n private readonly settingsService: SettingsService,\n private readonly countryService: CountryService,\n private readonly nextActionService: NextActionService,\n private readonly xpsResponseErrorsMappingService: XpsResponseErrorsMappingService,\n private readonly encryptCreditCardService: EncryptCreditCardService,\n private readonly showErrorsActionCreator: ShowErrorsActionCreator,\n private readonly userBehaviourAnalyticsService: UserBehaviourAnalyticsService\n ) {}\n\n public async request(config: PaymentConfig): Promise<InitializeResponse> {\n const requestParams: InitializeRequestParams = {\n access_token: this.settingsService.token,\n pid: String(config.paymentMethodId),\n country: this.countryService.getCountry(),\n returnUrl: config.returnUrl,\n paymentWithSavedMethod:\n config.paymentWithSavedMethod === true\n ? XpsBoolean.true\n : XpsBoolean.false,\n save_payment_account_only: config.savePaymentMethod\n ? XpsBoolean.true\n : XpsBoolean.false,\n };\n\n if (config.savedMethodId) {\n requestParams.saved_method_id = config.savedMethodId;\n }\n\n return this.xpsApiService\n .directPaymentRequest(requestParams)\n .then((xpsResponse) => {\n const response =\n this.xpsResponseErrorsMappingService.mapErrors(xpsResponse);\n const initializeResponse = this.responseFactory(response);\n\n if (!initializeResponse.paymentForm) {\n return initializeResponse;\n }\n\n this.setCreditCardEncryptKey(initializeResponse.paymentForm);\n this.userBehaviourAnalyticsService.fillUserSession(\n initializeResponse.paymentForm\n );\n\n if (initializeResponse.paymentForm?.errors?.length) {\n const logError = (error: { code: number; message: string }): void => {\n this.userBehaviourAnalyticsService.send(\n UserBehaviourEventName.showErrorMessage,\n userBehaviourEventTypes.manual,\n { value: String(error.code), extraValue: error.message }\n );\n };\n\n initializeResponse.paymentForm.errors.forEach(logError);\n\n this.nextActionService.emitFlowUpdates(\n this.showErrorsActionCreator.getActionData(\n initializeResponse.paymentForm.errors\n )\n );\n }\n\n return initializeResponse;\n })\n .catch((error: Error) => {\n throw new ResponseError(error.message);\n });\n }\n\n private setCreditCardEncryptKey(paymentForm: PaymentForm): void {\n const publicKeyField: Field | undefined = paymentForm.fields.find(\n (field: Field) => field.name === 'public_key'\n );\n\n if (!publicKeyField) {\n return;\n }\n\n this.encryptCreditCardService.setPublicKey(atob(publicKeyField.value));\n }\n}\n","export abstract class XpsApiPartRequest {\n [fieldName: `xps_${string}`]: unknown;\n\n protected addXpsParameters(parameters: { [key: string]: unknown }): void {\n for (const key in parameters) {\n this[`xps_${key}`] = parameters[key];\n }\n }\n}\n","import { AppError } from './app-error.class';\n\nexport class TokenError extends AppError {\n public constructor() {\n super('XPS API needs token.');\n }\n}\n","/* eslint-disable @typescript-eslint/naming-convention */\nimport { AbstractControl, UntypedFormGroup } from '@angular/forms';\nimport { Field } from '../../field.interface';\nimport { XpsApiPartRequest } from '../../xps-api-part-request.abstract';\nimport { TokenError } from '../../../exceptions-handling/errors/token-error.class';\n\nexport class SubmitRequest extends XpsApiPartRequest {\n public readonly access_token: string;\n public readonly xps_dfp_hash?: string;\n\n public constructor(parameters: {\n token: string | null;\n fields: Field[];\n form: UntypedFormGroup;\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n dfpHash: string | null;\n }) {\n super();\n\n const { token, fields, form, dfpHash } = parameters;\n\n if (token === null) {\n throw new TokenError();\n }\n\n this.access_token = token;\n\n if (dfpHash) {\n this.xps_dfp_hash = dfpHash;\n }\n\n this.addXpsParameters(this.getFieldsValues(fields, form));\n }\n\n private getFieldsValues(\n fields: Field[],\n form: UntypedFormGroup\n ): { [key: string]: unknown } {\n return fields.reduce(\n (xpsParams: { [key: string]: string }, field: Field) => {\n const formControl: AbstractControl | null = form.get(field.name);\n\n xpsParams[field.name] = formControl ? formControl.value : field?.value;\n\n return xpsParams;\n },\n {}\n );\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { SubmitRequest } from './submit-request.class';\n\nexport type SubmitRequestParameters = ConstructorParameters<\n typeof SubmitRequest\n>;\n\nexport type SubmitRequestFactory = (\n ...args: SubmitRequestParameters\n) => SubmitRequest;\n\nexport const submitRequestFactoryToken: InjectionToken<SubmitRequestFactory> =\n new InjectionToken<SubmitRequestFactory>('SubmitRequest');\n\nexport const submitRequestFactoryProvider: ValueProvider = {\n provide: submitRequestFactoryToken,\n useValue: (...args: SubmitRequestParameters) => new SubmitRequest(...args),\n};\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { SubmitResponse } from './submit-response.class';\n\nexport type SubmitResponseParameters = ConstructorParameters<\n typeof SubmitResponse\n>;\n\nexport type SubmitResponseFactory = (\n ...args: SubmitResponseParameters\n) => SubmitResponse;\n\nexport const submitResponseFactoryToken: InjectionToken<SubmitResponseFactory> =\n new InjectionToken<SubmitResponseFactory>('SubmitResponse');\n\nexport const submitResponseFactoryProvider: ValueProvider = {\n provide: submitResponseFactoryToken,\n useValue: (...args: SubmitResponseParameters) => new SubmitResponse(...args),\n};\n","import type XsollaAntifraudFingerprint from '@xsolla/antifraud-fingerprint';\nimport { Injectable } from '@angular/core';\nimport { SettingsService } from '../settings/settings.service';\nimport { Hash } from './hash.type';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DeviceFingerPrintService {\n private hash!: Promise<string>;\n private antifraudFingerprintLibrary!: Promise<\n typeof XsollaAntifraudFingerprint\n >;\n\n public constructor(private readonly settingsService: SettingsService) {}\n\n public init(): void {\n if (!this.settingsService.isInitialized) {\n return;\n }\n this.antifraudFingerprintLibrary = this.loadAntifraudFingerprintLibrary();\n this.hash = this.buildHash();\n }\n\n public async getHash(): Promise<string> {\n return this.hash;\n }\n\n private async loadAntifraudFingerprintLibrary(): Promise<\n typeof XsollaAntifraudFingerprint\n > {\n const library = await import('@xsolla/antifraud-fingerprint');\n\n return library.AntifraudFingerprint as typeof XsollaAntifraudFingerprint;\n }\n\n private async buildHash(): Promise<string> {\n const hash: Hash = await this.generate();\n return JSON.stringify(hash);\n }\n\n private async generate(): Promise<Hash | null> {\n const fingerprint = await this.makeAntifraudFingerprint();\n if (!fingerprint) {\n return null;\n }\n\n await fingerprint.dispatch().catch((err) => console.log(err));\n\n const afsHash = await fingerprint.hash();\n\n return { '301': afsHash };\n }\n\n private async makeAntifraudFingerprint(): Promise<XsollaAntifraudFingerprint | null> {\n if (!this.settingsService.token) {\n return null;\n }\n\n const antifraudFingerprint: typeof XsollaAntifraudFingerprint = await this\n .antifraudFingerprintLibrary;\n\n try {\n return new antifraudFingerprint({\n api: {\n url: 'https://afs.xsolla.com/dfp/api/v1/',\n token: this.settingsService.token,\n timeout: 3000,\n },\n retry: {\n num: 1,\n timeout: 500,\n },\n });\n } catch (error: unknown) {\n return null;\n }\n }\n}\n","import { Field } from '../field.interface';\nimport { Inject, Injectable } from '@angular/core';\nimport {\n SubmitRequestFactory,\n submitRequestFactoryToken,\n} from './request/submit-request.token';\nimport {\n SubmitResponseFactory,\n submitResponseFactoryToken,\n} from './response/submit-response.token';\nimport { SettingsService } from '../../settings/settings.service';\nimport { SubmitResponse } from './response/submit-response.class';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { DeviceFingerPrintService } from '../../device-finger-print/device-finger-print.service';\nimport { ResponseError } from '../../exceptions-handling/errors/response-error.class';\nimport { XpsResponse } from '../xps-response.interface';\nimport { XpsApiService } from '../xps-api/xps-api.service';\nimport { EncryptCreditCardService } from '../../encrypt-credit-card/encrypt-credit-card.service';\nimport { SubmitRequest } from './request/submit-request.class';\nimport { XpsResponseErrorsMappingService } from '../../errors-mapping/xps-response-errors-mapping.service';\nimport { UserBehaviourEventName } from '../../user-behaviour-analytics/user-behaviour-event-name.enum';\nimport { userBehaviourEventTypes } from '../../user-behaviour-analytics/user-behaviour-event/user-behaviour-event-types';\nimport { UserBehaviourAnalyticsService } from '../../user-behaviour-analytics/user-behaviour-analytics.service';\n\n@Injectable({ providedIn: 'root' })\nexport class SubmitService {\n public constructor(\n @Inject(submitRequestFactoryToken)\n private readonly requestFactory: SubmitRequestFactory,\n @Inject(submitResponseFactoryToken)\n private readonly responseFactory: SubmitResponseFactory,\n private readonly settingsService: SettingsService,\n private readonly deviceFingerPrintService: DeviceFingerPrintService,\n private readonly xpsApiService: XpsApiService,\n private readonly xpsResponseErrorsMappingService: XpsResponseErrorsMappingService,\n private readonly encryptCreditCardService: EncryptCreditCardService,\n private readonly userBehaviourAnalyticsService: UserBehaviourAnalyticsService\n ) {}\n\n // NB: Never add 'async' statement for this method!\n // 'Async' statement wraps current promise into another.\n // In this way two promises become unequal, that can broke XPS API requests logic.\n\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n public request(\n fields: Field[],\n form: UntypedFormGroup\n ): Promise<SubmitResponse> {\n return (\n this.deviceFingerPrintService\n .getHash()\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n .then((dfpHash) => {\n const requestParams = this.requestFactory({\n token: this.settingsService.token,\n fields,\n form,\n dfpHash,\n });\n\n const encryptedRequest =\n this.encryptCreditCardService.encryptCreditCard<SubmitRequest>(\n requestParams\n );\n\n return this.xpsApiService\n .directPaymentRequest(encryptedRequest)\n .then((xpsResponse: XpsResponse) => {\n const response =\n this.xpsResponseErrorsMappingService.mapErrors(xpsResponse);\n\n this.fillUserSession(xpsResponse);\n\n if (response.errors) {\n const logError = (error: {\n code: number;\n message: string;\n }): void => {\n this.userBehaviourAnalyticsService.send(\n UserBehaviourEventName.showErrorMessage,\n userBehaviourEventTypes.manual,\n { value: String(error.code), extraValue: error.message }\n );\n };\n\n response.errors.forEach(logError);\n }\n\n return this.responseFactory(response);\n })\n .catch((error: Error) => {\n throw new ResponseError(error.message);\n });\n })\n );\n }\n\n private fillUserSession(xpsResponse: XpsResponse): void {\n this.userBehaviourAnalyticsService.fillUserSession({\n ...xpsResponse,\n fields: Object.keys(xpsResponse.form).map(\n (key: string): Field => (xpsResponse as XpsResponse).form[key]\n ),\n });\n }\n}\n","import { Observable, Subject } from 'rxjs';\n\nexport abstract class EmitDataService<Data> {\n public data$: Observable<Data>;\n\n private readonly dataSubject = new Subject<Data>();\n\n public constructor() {\n this.data$ = this.dataSubject.asObservable();\n }\n\n public emit(data: Data): void {\n this.dataSubject.next(data);\n }\n}\n","import { UntypedFormGroup } from '@angular/forms';\nimport { Field } from '../../field.interface';\nimport { XpsApiPartRequest } from '../../xps-api-part-request.abstract';\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport class SyncRequest extends XpsApiPartRequest {\n public readonly access_token: string;\n public readonly xps_fix_command = 'calculate';\n\n public constructor(parameters: {\n token: string;\n changedField: Field;\n fields: Field[];\n form: UntypedFormGroup;\n }) {\n super();\n\n this.access_token = parameters.token;\n\n const fieldsValues = this.getFieldsValues(\n parameters.changedField,\n parameters.fields,\n parameters.form\n );\n\n this.addXpsParameters({\n ...fieldsValues,\n change_element: parameters.changedField.name,\n });\n }\n\n private getFieldsValues(\n changedField: Field,\n fields: Field[],\n form: UntypedFormGroup\n ): { [key: string]: unknown } {\n const fieldsMap = this.getFieldsMap(fields);\n return changedField?.javascript?.change.params.reduce(\n (xpsParams: { [key: string]: string }, fieldName: string) => {\n const formControl = form.get(fieldName);\n const field: Field | undefined = fieldsMap.get(fieldName);\n\n if (formControl || field) {\n xpsParams[fieldName] = formControl?.value ?? field?.value;\n }\n\n return xpsParams;\n },\n {}\n );\n }\n\n private getFieldsMap(fields: Field[]): Map<string, Field> {\n const map = new Map<string, Field>();\n fields.forEach((field) => map.set(field.name, field));\n return map;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { SyncRequest } from './sync-request.class';\n\nexport type SyncRequestParameters = ConstructorParameters<typeof SyncRequest>;\n\nexport type SyncRequestFactory = (\n ...args: SyncRequestParameters\n) => SyncRequest;\n\nexport const syncRequestFactoryToken: InjectionToken<SyncRequestFactory> =\n new InjectionToken<SyncRequestFactory>('SyncRequest');\n\nexport const syncRequestFactoryProvider: ValueProvider = {\n provide: syncRequestFactoryToken,\n useValue: (...args: SyncRequestParameters) => new SyncRequest(...args),\n};\n","import { ValidationErrors } from '@angular/forms';\nimport { Field } from '../../field.interface';\nimport { XpsResponse } from '../../xps-response.interface';\n\nexport class SyncResponse {\n public readonly error: ValidationErrors | null = null;\n public readonly fields: Field[];\n public readonly parameters: XpsResponse;\n\n public constructor(changedField: Field, response: XpsResponse) {\n const fieldError = response?.errors?.find(\n (error) => error.element_name === changedField.name\n );\n\n if (fieldError) {\n this.error = {\n asyncError: {\n code: fieldError.code,\n message: fieldError.message,\n },\n };\n }\n\n this.fields = Object.keys(response.form).map(\n (key: string): Field => response.form[key]\n );\n\n this.parameters = response;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { SyncResponse } from './sync-response.class';\n\nexport type SyncResponseParameters = ConstructorParameters<typeof SyncResponse>;\n\nexport type SyncResponseFactory = (\n ...args: SyncResponseParameters\n) => SyncResponse;\n\nexport const syncResponseFactoryToken: InjectionToken<SyncResponseFactory> =\n new InjectionToken<SyncResponseFactory>('SyncResponse');\n\nexport const syncResponseFactoryProvider: ValueProvider = {\n provide: syncResponseFactoryToken,\n useValue: (...args: SyncResponseParameters) => new SyncResponse(...args),\n};\n","import { Inject, Injectable } from '@angular/core';\nimport { UntypedFormGroup, ValidationErrors } from '@angular/forms';\nimport { Observable, Subject } from 'rxjs';\nimport { SettingsService } from '../../settings/settings.service';\nimport { EmitDataService } from '../emit-data.service.abstract';\nimport { Field } from '../field.interface';\nimport { XpsResponse } from '../xps-response.interface';\nimport { FieldSyncState } from './field-sync-state.interface';\nimport {\n SyncRequestFactory,\n syncRequestFactoryToken,\n} from './request/sync-request.token';\nimport { SyncResponse } from './response/sync-response.class';\nimport {\n SyncResponseFactory,\n syncResponseFactoryToken,\n} from './response/sync-response.token';\nimport { NextActionService } from '../actions/next-action.service';\nimport { ShowErrorsActionCreator } from '../actions/show-errors/show-errors.action.class';\nimport { XpsApiService } from '../xps-api/xps-api.service';\nimport { FieldAsyncValidation } from './field-async-validation.interface';\nimport { EncryptCreditCardService } from '../../encrypt-credit-card/encrypt-credit-card.service';\nimport { SyncRequest } from './request/sync-request.class';\nimport { XpsResponseErrorsMappingService } from '../../errors-mapping/xps-response-errors-mapping.service';\nimport { UserBehaviourAnalyticsService } from '../../user-behaviour-analytics/user-behaviour-analytics.service';\nimport { UserBehaviourEventName } from '../../user-behaviour-analytics/user-behaviour-event-name.enum';\nimport { userBehaviourEventTypes } from '../../user-behaviour-analytics/user-behaviour-event/user-behaviour-event-types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SyncService extends EmitDataService<XpsResponse> {\n private prevFieldSyncStates: { [fieldName: string]: FieldSyncState } = {};\n private form: UntypedFormGroup = new UntypedFormGroup({});\n private fields: Field[] = [];\n private fieldSyncTimers: { [fieldName: string]: number } = {};\n private readonly fieldAsyncValidation = new Subject<FieldAsyncValidation>();\n\n public constructor(\n @Inject(syncRequestFactoryToken)\n private readonly requestFactory: SyncRequestFactory,\n @Inject(syncResponseFactoryToken)\n private readonly responseFactory: SyncResponseFactory,\n private readonly xpsApiService: XpsApiService,\n private readonly nextActionService: NextActionService,\n private readonly settingsService: SettingsService,\n private readonly xpsResponseErrorsMappingService: XpsResponseErrorsMappingService,\n private readonly encryptCreditCardService: EncryptCreditCardService,\n private readonly showErrorsActionCreator: ShowErrorsActionCreator,\n private readonly userBehaviourAnalyticsService: UserBehaviourAnalyticsService\n ) {\n super();\n }\n\n public get fieldAsyncValidation$(): Observable<FieldAsyncValidation> {\n return this.fieldAsyncValidation.asObservable();\n }\n\n public setup(form: UntypedFormGroup, fields: Field[]): void {\n this.reset();\n\n this.form = form;\n this.fields = fields;\n }\n\n public reset(): void {\n this.prevFieldSyncStates = {};\n this.form = new UntypedFormGroup({});\n this.fields = [];\n }\n\n public async validate(\n field: Field,\n delay = Number('750')\n ): Promise<ValidationErrors | null> {\n if (!this.isReadyField(field)) {\n return Promise.resolve(null);\n }\n\n const control = this.form.get(field.name);\n const value = control?.value;\n const prevFieldState = this.getPrevFieldSyncState(field);\n\n const isInitialValue = value === field.value && !prevFieldState;\n\n if (isInitialValue) {\n return Promise.resolve(null);\n }\n\n if (prevFieldState && value === prevFieldState.value) {\n return Promise.resolve(prevFieldState.result).then((response) => {\n return response?.error ?? null;\n });\n }\n\n const updateFieldState = async (): Promise<\n string | ValidationErrors | null\n > => {\n const requestPromise = this.request(field);\n\n this.setPrevFieldSyncState(field, value, requestPromise);\n\n return requestPromise.then((response: SyncResponse) => {\n this.fieldAsyncValidation.next({\n value,\n field,\n response,\n });\n\n return response.error ?? null;\n });\n };\n\n return new Promise((resolve) => {\n if (delay) {\n const timerId = setTimeout(() => {\n if (value !== control?.value) {\n return resolve(null);\n }\n\n void updateFieldState().then(\n (errors: ValidationErrors | null | string) =>\n resolve(errors as ValidationErrors)\n );\n }, delay);\n\n this.resetFieldSyncTimer(field, Number(timerId));\n } else {\n void updateFieldState().then(\n (errors: ValidationErrors | null | string) =>\n resolve(errors as ValidationErrors)\n );\n }\n });\n }\n\n public getSyncValidationErrors(field: Field): ValidationErrors | null {\n const control = this.form.get(field.name);\n return control?.errors ?? null;\n }\n\n protected async request(field: Field): Promise<SyncResponse> {\n const requestParams = this.requestFactory({\n token: this.settingsService.token,\n changedField: field,\n fields: this.fields,\n form: this.form,\n });\n\n const encryptedRequest =\n this.encryptCreditCardService.encryptCreditCard<SyncRequest>(\n requestParams\n );\n\n return this.xpsApiService\n .directPaymentRequest(encryptedRequest)\n .then((xpsResponse: XpsResponse) => {\n const response =\n this.xpsResponseErrorsMappingService.mapErrors(xpsResponse);\n\n this.emitFormErrors(response);\n this.emit(response);\n return this.responseFactory(field, response);\n });\n }\n\n private isReadyField(field: Field): boolean {\n const isSyncEnabled = !!field.javascript?.change;\n const isExistsInForm = !!this.form?.get(field.name);\n\n return isSyncEnabled && isExistsInForm;\n }\n\n private getPrevFieldSyncState(field: Field): FieldSyncState {\n return this.prevFieldSyncStates[field.name];\n }\n\n private setPrevFieldSyncState(\n field: Field,\n value: unknown,\n result: Promise<SyncResponse>\n ): void {\n this.prevFieldSyncStates[field.name] = { value, result };\n }\n\n private emitFormErrors(response: XpsResponse): void {\n if (response.errors) {\n const logError = (error: { code: number; message: string }): void => {\n this.userBehaviourAnalyticsService.send(\n UserBehaviourEventName.showErrorMessage,\n userBehaviourEventTypes.manual,\n { value: String(error.code), extraValue: error.message }\n );\n };\n\n response.errors.forEach(logError);\n }\n\n const formErrors = response.errors?.filter((error) => !error.element_name);\n\n if (formErrors?.length) {\n this.nextActionService.emitFlowUpdates(\n this.showErrorsActionCreator.getActionData(formErrors)\n );\n }\n }\n\n private resetFieldSyncTimer(field: Field, timerId: number): void {\n const prevTimerId: number = this.fieldSyncTimers[field.name];\n\n if (prevTimerId) {\n clearTimeout(prevTimerId);\n }\n\n this.fieldSyncTimers[field.name] = timerId;\n }\n}\n","import { SafeHtml } from '@angular/platform-browser';\nimport { ControlType } from './control-type.type';\n\nexport class ControlConfig {\n [option: string]: any; // eslint-disable-line @typescript-eslint/no-explicit-any\n public controlType!: ControlType | string;\n public name!: string;\n public title?: string | null | SafeHtml;\n public shouldHideUserInput?: boolean | null = false;\n}\n","import { ControlConfig } from './control-config';\n\nexport class TextControlConfig extends ControlConfig {\n public controlType = 'text';\n public dataType?: string;\n public maxLength?: number;\n public placeholder?: string;\n public autocomplete?: string;\n public icon?: string;\n public description?: string;\n public inputMode?: string;\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport { ValidatorFn as ConvertedValidatorFn } from './validator-fn.type';\nimport { ValidationErrors as ConvertedValidationErrors } from './validation-errors.interface';\nimport { ValidationError as ConvertedValidationError } from './validation-error.interface';\n\nexport function convert(\n validator: ValidatorFn,\n message: string\n): ConvertedValidatorFn {\n return (control: AbstractControl): ConvertedValidationErrors | null => {\n const errors: ValidationErrors | null = validator(control);\n\n if (!errors) {\n return errors;\n }\n\n const firstErrorKey: string = Object.keys(errors)[0];\n const firstError: ConvertedValidationError = errors[firstErrorKey];\n const error =\n typeof firstError === 'object' && firstError !== null ? firstError : {};\n error.message = message;\n\n errors[firstErrorKey] = error;\n\n return errors as ConvertedValidationErrors;\n };\n}\n","import { Validators } from '@angular/forms';\nimport { convert } from '../convert.function';\nimport { ValidatorFn } from '../validator-fn.type';\n\nconst emailRegexp =\n /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i; // eslint-disable-line\n\nexport function convertedEmailValidator(): ValidatorFn {\n return convert(Validators.pattern(emailRegexp), 'Enter a valid email');\n}\n","import { ValidatorFn, Validators } from '@angular/forms';\nimport { convert } from '../convert.function';\n\nexport function convertedRequiredValidator(): ValidatorFn {\n return convert(Validators.required, 'Required');\n}\n","import { UntypedFormControl, Validators } from '@angular/forms';\nimport { XpsBoolean } from '../../../xps-boolean.enum';\nimport { Field } from '../../field.interface';\nimport { SyncService } from '../../sync/sync.service';\nimport { CommonControlConfig } from '../common-control-config.interface';\nimport { ControlConfig } from '../controls/control-config';\nimport { FormState } from '../form-state.interface';\nimport { convert } from '../validators/convert.function';\nimport { convertedRequiredValidator } from '../validators/required/required.validator';\nimport { ValidatorFn } from '../validators/validator-fn.type';\nimport { AsyncValidatorFn } from '../validators/async-validator-fn.type';\n\nexport abstract class Converter {\n protected constructor(protected syncService: SyncService) {}\n\n public convertToConfig(field: Field, formState?: FormState): ControlConfig {\n const config = this.createControlConfig(field, formState);\n\n if (formState?.disabled) {\n config.disabled = true;\n }\n\n return config;\n }\n\n public convertToFormControl(field: Field): UntypedFormControl {\n return new UntypedFormControl(\n this.getValue(field),\n this.getValidators(field),\n this.getAsyncValidators(field)\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public getValidators(field: Field, formState?: FormState): ValidatorFn[] {\n const validators: ValidatorFn[] = [];\n\n if (field.isMandatory === XpsBoolean.true) {\n validators.push(convertedRequiredValidator());\n }\n\n if (field.regex) {\n const match = /^\\/(.*)\\/([gim]*)$/.exec(field.regex);\n\n if (match) {\n const pattern = new RegExp(match[1], match[2]);\n const errorMessage = field.validation_error_msg\n ? field.validation_error_msg\n : 'Enter valid data';\n validators.push(convert(Validators.pattern(pattern), errorMessage));\n }\n }\n\n return validators;\n }\n\n public getAsyncValidators(\n field: Field\n ): AsyncValidatorFn | AsyncValidatorFn[] | null {\n return async () => this.syncService.validate(field);\n }\n\n public createDefaultControlConfig<T extends { [key: string]: unknown }>(\n controlConfigClass: new () => T,\n field: Field\n ): T {\n const config = new controlConfigClass();\n\n this.copyCommonOptions(config, field);\n\n return config;\n }\n\n public getValue(field: Field): string {\n return field.value;\n }\n\n protected abstract createControlConfig(\n field: Field,\n formState?: FormState\n ): ControlConfig;\n\n protected getDataType(): string {\n return 'text';\n }\n\n protected getAutocomplete(): string {\n return 'off';\n }\n\n protected shouldHideUserInput(): boolean {\n return false;\n }\n\n private getCommonControlConfig(field: Field): CommonControlConfig {\n return {\n name: field.name,\n title: field.title,\n labelHint: field.label_hint,\n dataType: this.getDataType(),\n readonly: field.isReadonly === XpsBoolean.true,\n placeholder: field.example,\n autocomplete: this.getAutocomplete(),\n };\n }\n\n private copyCommonOptions<Target extends { [key: string]: unknown }>(\n target: Target,\n field: Field\n ): void {\n const commonControlConfig = this.getCommonControlConfig(field);\n\n Object.keys(commonControlConfig).forEach((sourceKey: string) => {\n if (!(sourceKey in target)) {\n (target as { [key: string]: unknown })[sourceKey] = (\n commonControlConfig as unknown as { [key: string]: unknown }\n )[sourceKey];\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Field } from '../../../field.interface';\nimport { SyncService } from '../../../sync/sync.service';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { convertedEmailValidator } from '../../validators/email/email-validator';\nimport { ValidatorFn } from '../../validators/validator-fn.type';\nimport { Converter } from '../converter.abstract';\n\n@Injectable()\nexport class EmailConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n return super.getValidators(field).concat([convertedEmailValidator()]);\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n\n config.autocomplete = 'email';\n config.icon = 'mail';\n\n return config;\n }\n\n protected getDataType(): string {\n return 'email';\n }\n}\n","import { AbstractControl } from '@angular/forms';\nimport { ValidationErrors } from '../validation-errors.interface';\nimport { ValidatorFn } from '../validator-fn.type';\n\nexport const restrictedValueValidator = (\n restrictedValue: unknown\n): ValidatorFn => {\n return ({ value }: AbstractControl): ValidationErrors | null => {\n return value !== restrictedValue ? null : { valueAllowed: false };\n };\n};\n","import { Injectable } from '@angular/core';\nimport { ValidatorFn, Validators } from '@angular/forms';\nimport { CountryService } from '../../../../country/country.service';\nimport { Field } from '../../../field.interface';\nimport { SyncService } from '../../../sync/sync.service';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { convert } from '../../validators/convert.function';\nimport { restrictedValueValidator } from '../../validators/restricted-value/restricted-value.validator';\nimport { Converter } from '../converter.abstract';\n\n@Injectable()\nexport class ZipConverter extends Converter {\n private readonly minLength = 3;\n private readonly maxLength = 10;\n private readonly usCountryLength = 5;\n\n public constructor(\n syncService: SyncService,\n private readonly countryService: CountryService\n ) {\n super(syncService);\n }\n\n private get isUsCountry(): boolean {\n return this.countryService.getCountry() === 'US';\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n const minLength = this.isUsCountry ? this.usCountryLength : this.minLength;\n const maxLength = this.isUsCountry ? this.usCountryLength : this.maxLength;\n const validators: ValidatorFn[] = super\n .getValidators(field)\n .concat([\n convert(\n Validators.minLength(minLength),\n `Enter at least ${minLength} characters`\n ),\n\n convert(\n Validators.maxLength(maxLength),\n `Enter no more than ${maxLength} characters`\n ),\n ]);\n\n if (this.isUsCountry) {\n validators.push(\n convert(restrictedValueValidator('00000'), 'Enter a valid ZIP code')\n );\n }\n\n return validators;\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n config.icon = 'location';\n\n if (this.isUsCountry) {\n config.maskConfig = {\n mask: new Array(this.usCountryLength).fill('9').join(''),\n guide: false,\n unmaskModelValue: true,\n showMask: true,\n };\n config.inputMode = 'numeric';\n } else {\n config.maxLength = this.maxLength;\n }\n\n return config;\n }\n\n protected getAutocomplete(): string {\n return 'postal-code';\n }\n\n protected getDataType(): string {\n return 'text';\n }\n}\n","export function isEmptyInputValue(value: string | null | undefined): boolean {\n return value == null || value.length === 0;\n}\n","export function isString(value: unknown): value is string {\n return typeof value === 'string';\n}\n","import { isEmptyInputValue } from '../is-empty-input-value.function';\nimport { ValidatorFn } from '../validator-fn.type';\nimport { ValidationErrors } from '../validation-errors.interface';\nimport { isString } from '../../../../type-guards/is-string.function';\n\n/**\n * Checks number match Luhn algorithm.\n * Based on http://en.wikipedia.org/wiki/Luhn.\n */\nexport const luhnFormulaValidator: ValidatorFn = ({ value }) => {\n if (isEmptyInputValue(value) || !isString(value)) {\n return null;\n }\n\n const error: ValidationErrors = {\n rewritableError: {\n message: `Enter a valid card number`,\n },\n };\n\n if (/[^0-9 -]+/.test(value)) {\n // accept only spaces, digits and dashes\n return error;\n }\n\n let resultSum = 0;\n let digit = 0;\n let isEven = false;\n\n const modBase = 10;\n const digitRadix = 10;\n const maxNumber = 9;\n const digits = value.replace(/\\D/g, '');\n\n // Checks if number match Luhn algorithm\n // based on http://en.wikipedia.org/wiki/Luhn\n for (let index = digits.length - 1; index >= 0; index--) {\n const char = digits.charAt(index);\n digit = parseInt(char, digitRadix);\n\n if (isEven && (digit *= 2) > maxNumber) {\n digit -= maxNumber;\n }\n\n resultSum += digit;\n isEven = !isEven;\n }\n\n return resultSum % modBase === 0 ? null : error;\n};\n","import { SafeHtml } from '@angular/platform-browser';\nimport { ControlConfig } from '../control-config';\nimport { CreditCardTypes } from '../../../../credit-card/credit-card-types.enum';\n\nexport class CardNumberConfig extends ControlConfig {\n public controlType = 'card-number';\n public placeholder?: string | SafeHtml | null;\n public icon?: string;\n public availableCardTypes: CreditCardTypes[] = [];\n public activeCardType?: CreditCardTypes;\n public customError = '';\n}\n","import { isEmptyInputValue } from '../is-empty-input-value.function';\nimport { Injectable } from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\nimport { isString } from '../../../../type-guards/is-string.function';\nimport { CreditCardService } from '../../../../credit-card/credit-card.service';\n\n@Injectable()\nexport class CreditCardMinLengthValidator {\n public constructor(private readonly creditService: CreditCardService) {}\n\n public validate = (field: { value: string }): ValidationErrors | null => {\n if (isEmptyInputValue(field.value) || !isString(field.value)) {\n return null;\n }\n\n const length = field.value.length;\n\n const cardType = this.creditService.getTypeByNumber(field.value);\n\n const { minLength } = this.creditService.getCreditCardSettings(cardType);\n\n return length < minLength\n ? {\n rewritableError: {\n message: `Enter at least ${minLength} characters`,\n number: minLength,\n },\n }\n : null;\n };\n}\n","import { Converter } from '../converter.abstract';\nimport { SyncService } from '../../../sync/sync.service';\nimport { CreditCardMinLengthValidator } from '../../validators/credit-card-length/credit-card-min-length.validator';\nimport { Field } from '../../../field.interface';\nimport { ValidatorFn } from '@angular/forms';\nimport { luhnFormulaValidator } from '../../validators/luhn-formula-validator/luhn-formula.validator';\nimport { FormState } from '../../form-state.interface';\nimport { CardNumberConfig } from '../../controls/card-number/card-number-control.config';\nimport { CreditCardTypes } from '../../../../credit-card/credit-card-types.enum';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class CardNumberConverter extends Converter {\n public constructor(\n syncService: SyncService,\n private readonly maxLengthValidator: CreditCardMinLengthValidator,\n private readonly minLengthValidator: CreditCardMinLengthValidator\n ) {\n super(syncService);\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n return super\n .getValidators(field)\n .concat([\n luhnFormulaValidator,\n this.minLengthValidator.validate,\n this.maxLengthValidator.validate,\n ]);\n }\n\n protected createControlConfig(\n field: Field,\n formState: FormState\n ): CardNumberConfig {\n const config = this.createDefaultControlConfig(CardNumberConfig, field);\n\n config.placeholder = config.title;\n\n config.availableCardTypes =\n (formState?.availableCardTypes as CreditCardTypes[]) ?? [];\n\n config.activeCardType = formState?.activeCardType as CreditCardTypes;\n\n config.customError = formState?.customError as string;\n config.disabled = formState?.disabled ?? false;\n\n return config;\n }\n\n protected getAutocomplete(): string {\n return 'cc-number';\n }\n\n protected getDataType(): string {\n return 'text';\n }\n}\n","import { AbstractControl } from '@angular/forms';\nimport { ValidationErrors } from '../validation-errors.interface';\nimport { FormState } from '../../form-state.interface';\nimport { ValidatorFn } from '../validator-fn.type';\n\nexport const maxMonths = 12;\nexport const getMinMonth = (parsedYear: string): number => {\n let minMonth = 1;\n\n const year = parsedYear ? Number('20' + parsedYear) : null;\n const today = new Date();\n minMonth = year === today.getFullYear() ? today.getMonth() + 1 : 1;\n\n return minMonth;\n};\n\nconst sendErrMessage = (fn: unknown): ValidationErrors =>\n ({\n cardMonthExpiration: {\n message: fn,\n },\n } as ValidationErrors);\n\nexport function cardMonthValidator(formState?: FormState): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const { value } = control;\n\n if (typeof value !== 'string') return null;\n\n const minMonth = getMinMonth((formState?.cardYearValue as string) ?? null);\n\n const twoDigitsRegex = new RegExp(/^\\d{2}$/);\n const fieldCommonLength = 2;\n\n if (value.length !== fieldCommonLength) {\n return sendErrMessage(`Enter ${fieldCommonLength} characters`);\n }\n\n if (!twoDigitsRegex.test(value)) {\n return sendErrMessage(`Enter a valid expiration month`);\n }\n\n if (Number(value) < minMonth) {\n return sendErrMessage(\n `Enter a month greater than or equal to ${minMonth}`\n );\n }\n\n if (Number(value) > maxMonths) {\n return sendErrMessage(`Enter a month less than or equal to ${maxMonths}`);\n }\n\n return null;\n };\n}\n","import { Injectable } from '@angular/core';\nimport { Converter } from '../converter.abstract';\nimport { SyncService } from '../../../sync/sync.service';\nimport { ValidatorFn } from '@angular/forms';\nimport { Field } from '../../../field.interface';\nimport { FormState } from '../../form-state.interface';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { cardMonthValidator } from '../../validators/card-month/card-month.validator';\n\n@Injectable()\nexport class CardMonthConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(field: Field, formState: FormState): ValidatorFn[] {\n return super.getValidators(field).concat([cardMonthValidator(formState)]);\n }\n\n protected createControlConfig(\n field: Field,\n formState: FormState\n ): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n\n config.maskConfig = {\n mask: '99',\n guide: false,\n };\n config.inputMode = 'numeric';\n\n config.placeholder = `MM`;\n\n config.title = `MM`;\n\n config.disabled = formState?.disabled ?? false;\n\n return config;\n }\n\n protected getAutocomplete(): string {\n return 'cc-exp-month';\n }\n\n protected getDataType(): string {\n return 'text';\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Converter } from '../converter.abstract';\nimport { SyncService } from '../../../sync/sync.service';\nimport { ValidatorFn, Validators } from '@angular/forms';\nimport { Field } from '../../../field.interface';\nimport { FormState } from '../../form-state.interface';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { FieldNames } from '../../../field-names.enum';\nimport { CvvFormState } from './cvv-form-state.interface';\nimport { convert } from '../../validators/convert.function';\nimport { CreditCardTypes } from '../../../../credit-card/credit-card-types.enum';\n\n@Injectable()\nexport class CvvConverter extends Converter {\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n private maxFieldLength = 4;\n\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(field: Field, formState?: CvvFormState): ValidatorFn[] {\n const validators: ValidatorFn[] = super.getValidators(field);\n const activeCardType = formState ? formState.activeCardType : null;\n const getPatternValidator = (pattern: RegExp): ValidatorFn =>\n convert(Validators.pattern(pattern), `Enter a valid CVV/CVC`);\n\n switch (activeCardType) {\n case CreditCardTypes.AMERICAN_EXPRESS: {\n this.maxFieldLength = 4;\n validators.push(getPatternValidator(/^\\d{4}$/));\n break;\n }\n case CreditCardTypes.MAESTRO: {\n this.maxFieldLength = 3;\n validators.push(getPatternValidator(/^\\d{0,3}$/));\n break;\n }\n default: {\n this.maxFieldLength = 3;\n validators.push(getPatternValidator(/^\\d{3}$/));\n }\n }\n\n return validators;\n }\n\n protected createControlConfig(\n field: Field,\n formState: FormState\n ): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n\n config.maskConfig = {\n mask: new Array(this.maxFieldLength).fill('9').join(''),\n unmaskModelValue: false,\n guide: false,\n };\n\n config.tooltip = {\n text: 'The code is on the back of your card',\n image: 'cvv',\n parentField: FieldNames.cvv,\n position: 'input',\n analyticsAction: 'show-cvv-tooltip',\n };\n\n config.inputMode = 'numeric';\n config.shouldHideUserInput = this.shouldHideUserInput();\n config.disabled = formState?.disabled ?? false;\n\n return config;\n }\n\n protected getAutocomplete(): string {\n return 'cc-csc';\n }\n\n protected getDataType(): string {\n return 'text';\n }\n\n protected shouldHideUserInput(): boolean {\n return true;\n }\n}\n","import { ValidatorFn, ValidationErrors } from '@angular/forms';\nimport { isEmptyInputValue } from '../is-empty-input-value.function';\n\nexport const birthdateValidator: ValidatorFn = ({ value }) => {\n if (isEmptyInputValue(value) || typeof value !== 'string') {\n return null;\n }\n\n const error: ValidationErrors = {\n invalidBirthDate: {\n message: `Enter a valid birth date`,\n },\n };\n const dateArr = value.split('/');\n const datePartsCount = 3;\n const dayIndex = 0;\n const monthIndex = 1;\n const yearIndex = 2;\n const maxMonths = 12;\n const maxDays = 31;\n const minAge = 16;\n const maxAge = 120;\n\n if (dateArr.length < datePartsCount) {\n return null;\n }\n\n if (+dateArr[monthIndex] > maxMonths || +dateArr[dayIndex] > maxDays) {\n return error;\n }\n\n const currentDate = new Date(\n +dateArr[yearIndex],\n +dateArr[monthIndex],\n +dateArr[dayIndex]\n );\n const nowDate = new Date();\n\n if (\n isNaN(currentDate.getFullYear()) ||\n nowDate.getFullYear() - currentDate.getFullYear() <= minAge ||\n nowDate.getFullYear() - currentDate.getFullYear() > maxAge\n ) {\n return error;\n } else {\n return null;\n }\n};\n","import { Injectable } from '@angular/core';\nimport { ValidatorFn, Validators } from '@angular/forms';\nimport { Field } from '../../../field.interface';\nimport { SyncService } from '../../../sync/sync.service';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { convert } from '../../validators/convert.function';\nimport { Converter } from '../converter.abstract';\nimport { birthdateValidator } from '../../validators/birth-date/birth-date.validator';\n\n@Injectable()\nexport class BirthDateConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n return super\n .getValidators(field)\n .concat([\n convert(\n Validators.pattern(/^[0-9]{1,2}\\/[0-9]{1,2}\\/[0-9]{4}$/),\n `Enter a valid birth date`\n ),\n birthdateValidator,\n ]);\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n\n config.maskConfig = {\n mask: '99/99/9999',\n unmaskModelValue: false,\n guide: false,\n };\n\n config.placeholder = `DD/MM/YYYY`;\n\n config.inputMode = 'numeric';\n\n return config;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Field } from '../../../field.interface';\nimport { SyncService } from '../../../sync/sync.service';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { Converter } from '../converter.abstract';\n\n@Injectable()\nexport class CardholderNameConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n return this.createDefaultControlConfig(TextControlConfig, field);\n }\n\n protected getAutocomplete(): string {\n return 'cc-name';\n }\n\n protected getDataType(): string {\n return 'text';\n }\n}\n","export const cpfNameRegex =\n /^[a-zA-ZÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ.'-]{2,50}(?: [a-zA-ZÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ.'-]{2,50}){1,8}$/i; // tslint:disable-line\n","import { Injectable } from '@angular/core';\nimport { ValidatorFn, Validators } from '@angular/forms';\nimport { Field } from '../../../field.interface';\nimport { SyncService } from '../../../sync/sync.service';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { convert } from '../../validators/convert.function';\nimport { Converter } from '../converter.abstract';\nimport { cpfNameRegex } from './cpf-name-regex.variable';\n\n@Injectable()\nexport class CpfNameConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n return super\n .getValidators(field)\n .concat([\n convert(Validators.pattern(cpfNameRegex), `Enter a valid name`),\n ]);\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n\n config.tooltip = {\n text: `Where to find your name`,\n image: 'cpf-name',\n };\n\n return config;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Field } from '../../../field.interface';\nimport { SyncService } from '../../../sync/sync.service';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { Converter } from '../converter.abstract';\n\n@Injectable()\nexport class CpfNumberConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n\n config.maskConfig = {\n mask: '999.999.999-99',\n unmaskModelValue: true,\n guide: false,\n };\n\n config.inputMode = 'numeric';\n\n config.placeholder = '000.000.000-00';\n\n config.tooltip = {\n text: `Where to find your registration number`,\n image: 'cpf-number',\n };\n\n return config;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { StreetNumberFormState } from './street-number-from-state.interface';\nimport { ValidatorFn } from '@angular/forms';\nimport { Field } from '../../../field.interface';\nimport { SyncService } from '../../../sync/sync.service';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { convert } from '../../validators/convert.function';\nimport { restrictedValueValidator } from '../../validators/restricted-value/restricted-value.validator';\nimport { Converter } from '../converter.abstract';\n\n@Injectable()\nexport class StreetNumberConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(\n field: Field,\n formState?: StreetNumberFormState\n ): ValidatorFn[] {\n const validators: ValidatorFn[] = super.getValidators(field);\n\n if (formState?.country === 'BL') {\n validators.push(\n convert(restrictedValueValidator('0'), `Enter a valid building number`)\n );\n }\n\n return validators;\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n return this.createDefaultControlConfig(TextControlConfig, field);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Field } from '../../../field.interface';\nimport { SyncService } from '../../../sync/sync.service';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { Converter } from '../converter.abstract';\n\n@Injectable()\nexport class TextConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n return this.createDefaultControlConfig(TextControlConfig, field);\n }\n}\n","import { ControlConfig } from '../control-config';\nimport { XpsBoolean } from '../../../../xps-boolean.enum';\n\nexport class CheckboxControlConfig extends ControlConfig {\n public controlType = 'checkbox';\n public initValue!: XpsBoolean;\n}\n","import { Injectable } from '@angular/core';\nimport { Converter } from '../converter.abstract';\nimport { XpsBoolean } from '../../../../xps-boolean.enum';\nimport { SyncService } from '../../../sync/sync.service';\nimport { Field } from '../../../field.interface';\nimport { ValidatorFn } from '../../validators/validator-fn.type';\nimport { convert } from '../../validators/convert.function';\nimport { restrictedValueValidator } from '../../validators/restricted-value/restricted-value.validator';\nimport { CheckboxControlConfig } from '../../controls/checkbox/checkbox-control.config';\n\n@Injectable()\nexport class CheckboxConverter extends Converter {\n protected readonly checkedValue = XpsBoolean.true;\n protected readonly uncheckedValue = XpsBoolean.false;\n\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n const validators: ValidatorFn[] = [];\n\n if (field.isMandatory === this.checkedValue) {\n validators.push(\n convert(\n restrictedValueValidator(this.uncheckedValue),\n 'validation_message_required_checkbox'\n )\n );\n }\n\n return validators;\n }\n\n protected createControlConfig(field: Field): CheckboxControlConfig {\n const config = this.createDefaultControlConfig(\n CheckboxControlConfig,\n field\n );\n\n config.placeholder = config.title;\n config.initValue = field.value as XpsBoolean;\n\n return config;\n }\n}\n","import { ControlConfig } from '../control-config';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { SearchSelectOption } from './search-select-option.interface';\nimport { SelectOption } from './select-option.interface';\n\nexport class SelectControlConfig extends ControlConfig {\n public controlType = 'search-select';\n public name!: string;\n public title?: string | SafeHtml;\n public options?: SelectOption[] | SearchSelectOption[];\n public initValue?: string;\n}\n","import { Injectable } from '@angular/core';\nimport { Converter } from '../converter.abstract';\nimport { SyncService } from '../../../sync/sync.service';\nimport { SelectControlConfig } from '../../controls/search-select/select-control.config';\nimport { Field } from '../../../field.interface';\nimport { SelectOption } from '../../controls/search-select/select-option.interface';\n\n@Injectable()\nexport class SelectConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n protected createControlConfig(field: Field): SelectControlConfig {\n const config = this.createDefaultControlConfig(SelectControlConfig, field);\n config.options = field.options as SelectOption[];\n config.initValue = field.value;\n\n return config;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Converter } from '../converter.abstract';\nimport { SyncService } from '../../../sync/sync.service';\nimport { Field } from '../../../field.interface';\nimport { TextControlConfig } from '../../controls/text-control.config';\n\n@Injectable()\nexport class PinConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n return this.createDefaultControlConfig(TextControlConfig, field);\n }\n}\n","import { RadioOption } from './radio-option.interface';\nimport { ControlConfig } from '../control-config';\n\nexport class RadioControlConfig extends ControlConfig {\n public controlType = 'radio';\n public options: RadioOption[] = [];\n}\n","import { Injectable } from '@angular/core';\nimport { Converter } from '../converter.abstract';\nimport { SyncService } from '../../../sync/sync.service';\nimport { Field } from '../../../field.interface';\nimport { RadioControlConfig } from '../../controls/radio-control/radio-control.config';\nimport { RadioOption } from '../../controls/radio-control/radio-option.interface';\n\n@Injectable()\nexport class RadioGroupConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n protected createControlConfig(field: Field): RadioControlConfig {\n const config = this.createDefaultControlConfig(RadioControlConfig, field);\n\n config.options = field.options as RadioOption[];\n return config;\n }\n}\n","import { ValidatorFn } from '@angular/forms';\nimport { Injectable } from '@angular/core';\nimport { Converter } from '../converter.abstract';\nimport { SyncService } from '../../../sync/sync.service';\nimport { Field } from '../../../field.interface';\nimport { TextControlConfig } from '../../controls/text-control.config';\n\n@Injectable()\nexport class PricepointConverter extends Converter {\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n private readonly maxFieldLength = 30;\n\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n return super.getValidators(field);\n }\n\n protected createControlConfig(field: Field): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n\n config.maskConfig = {\n mask: new Array(this.maxFieldLength).fill('9').join(``),\n unmaskModelValue: false,\n guide: false,\n };\n\n config.placeholder = field.title;\n config.inputMode = 'numeric';\n\n return config;\n }\n}\n","import { SafeHtml } from '@angular/platform-browser';\nimport { ControlConfig } from '../control-config';\n\nexport class CouponControlConfig extends ControlConfig {\n public controlType = 'coupon';\n public dataType?: string;\n public placeholder?: string | SafeHtml | null;\n public autocomplete?: string;\n}\n","import { Validators } from '@angular/forms';\nimport { ValidatorFn } from '../validator-fn.type';\nimport { convert } from '../convert.function';\n\nexport function couponValidator(\n message = `Enter a valid promo code`\n): ValidatorFn {\n return convert(Validators.pattern(/^[0-9a-z_-]+$/i), message);\n}\n","import { Injectable } from '@angular/core';\nimport { ValidatorFn } from '@angular/forms';\nimport { Converter } from '../converter.abstract';\nimport { SyncService } from '../../../sync/sync.service';\nimport { Field } from '../../../field.interface';\nimport { CouponControlConfig } from '../../controls/coupon/coupon-control.config';\nimport { couponValidator } from '../../validators/coupon/coupon-validator';\n\n@Injectable()\nexport class CouponConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(): ValidatorFn[] {\n return [couponValidator()];\n }\n\n protected createControlConfig(field: Field): CouponControlConfig {\n const config = this.createDefaultControlConfig(CouponControlConfig, field);\n\n config.placeholder = `Enter promo code`;\n\n return config;\n }\n}\n","import { AbstractControl } from '@angular/forms';\nimport { ValidationErrors } from '../validation-errors.interface';\n\nconst sendErrMessage = (fn: unknown): ValidationErrors =>\n ({\n cardYearExpiration: {\n message: fn,\n },\n } as ValidationErrors);\n\nexport const getLastCharactersInYear = (\n str: string = new Date().getFullYear().toString()\n): string => {\n // for getting last characters in year; need to check in future\n return str.slice(str.length - 2);\n};\n\n// Карта выдается максимум на 50 лет\nexport const maxYearsCount = 50;\n\nexport function cardYearValidator(\n control: AbstractControl\n): ValidationErrors | null {\n const { value } = control;\n\n if (typeof value !== 'string') return null;\n\n const minYear = parseInt(getLastCharactersInYear(), 10);\n\n const twoDigitsRegex = new RegExp(/^\\d{2}$/);\n\n const fieldCommonLength = 2;\n\n if (value.length !== fieldCommonLength) {\n return sendErrMessage(`Enter ${fieldCommonLength} characters`);\n }\n\n if (!twoDigitsRegex.test(value)) {\n return sendErrMessage(`Enter a valid expiration year`);\n }\n\n if (Number(value) < minYear) {\n return sendErrMessage(`Enter a year greater than or equal to ${minYear}`);\n }\n\n const maxValidYear = minYear + maxYearsCount;\n\n if (Number(value) > maxValidYear) {\n return sendErrMessage(`Enter a year less than or equal to ${maxValidYear}`);\n }\n\n return null;\n}\n","import { Injectable } from '@angular/core';\nimport { Converter } from '../converter.abstract';\nimport { SyncService } from '../../../sync/sync.service';\nimport { ValidatorFn } from '@angular/forms';\nimport { Field } from '../../../field.interface';\nimport { FormState } from '../../form-state.interface';\nimport { TextControlConfig } from '../../controls/text-control.config';\nimport { cardYearValidator } from '../../validators/card-year/card-year.validator';\n\n@Injectable()\nexport class CardYearConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n return super.getValidators(field).concat([cardYearValidator]);\n }\n\n protected createControlConfig(\n field: Field,\n formState: FormState\n ): TextControlConfig {\n const config = this.createDefaultControlConfig(TextControlConfig, field);\n\n config.maskConfig = {\n mask: '99',\n guide: false,\n };\n config.inputMode = 'numeric';\n\n config.placeholder = `YY`;\n\n config.title = `YY`;\n\n config.disabled = formState?.disabled ?? false;\n\n return config;\n }\n\n protected getAutocomplete(): string {\n return 'cc-exp-year';\n }\n\n protected getDataType(): string {\n return 'text';\n }\n}\n","import { Validators } from '@angular/forms';\nimport { ValidatorFn } from './validator-fn.type';\nimport { convert } from './convert.function';\n\nexport function phoneValidator(): ValidatorFn {\n return convert(Validators.pattern(/^\\d*$/), 'Enter a valid phone');\n}\n","import { ValidatorFn, Validators } from '@angular/forms';\nimport { convert } from './convert.function';\n\nexport function minLengthValidator(minLength: number): ValidatorFn {\n return convert(\n Validators.minLength(minLength),\n `Enter at least ${minLength} characters`\n );\n}\n","import { Validators } from '@angular/forms';\nimport { ValidatorFn } from './validator-fn.type';\nimport { convert } from './convert.function';\nexport function maxLengthValidator(maxLength: number): ValidatorFn {\n return convert(\n Validators.maxLength(maxLength),\n `Enter no more than ${maxLength} characters`\n );\n}\n","import { ControlConfig } from './control-config';\n\nexport class PhoneControlConfig extends ControlConfig {\n public controlType = 'phone';\n public placeholder?: string;\n public icon?: string;\n}\n","import { Injectable } from '@angular/core';\nimport { ValidatorFn } from '@angular/forms';\nimport { Converter } from './converter.abstract';\nimport { SyncService } from '../../sync/sync.service';\nimport { Field } from '../../field.interface';\nimport { phoneValidator } from '../validators/phone-validator';\nimport { minLengthValidator } from '../validators/min-length-validator';\nimport { maxLengthValidator } from '../validators/max-length-validator';\nimport { PhoneControlConfig } from '../controls/phone-control.config';\nimport { convertedRequiredValidator } from '../validators/required/required.validator';\n\n@Injectable()\nexport class PhoneConverter extends Converter {\n public constructor(syncService: SyncService) {\n super(syncService);\n }\n\n public getValidators(field: Field): ValidatorFn[] {\n const minLength = 10;\n const maxLength = 15;\n\n return super\n .getValidators(field)\n .concat([\n convertedRequiredValidator(),\n phoneValidator(),\n minLengthValidator(minLength),\n maxLengthValidator(maxLength),\n ]);\n }\n\n protected createControlConfig(field: Field): PhoneControlConfig {\n const config = this.createDefaultControlConfig(PhoneControlConfig, field);\n config.inputMode = 'numeric';\n return config;\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ConvertersMap } from './converters-map.interface';\nimport { EmailConverter } from './email/email.converter';\nimport { ZipConverter } from './zip/zip.converter';\nimport { CardNumberConverter } from './card-number/card-number.converter';\nimport { CardMonthConverter } from './card-month/card-month.converter';\nimport { CvvConverter } from './cvv/cvv.converter';\nimport { BirthDateConverter } from './birth-date/birth-date.converter';\nimport { CardholderNameConverter } from './cardholder-name/cardholder-name.converter';\nimport { CpfNameConverter } from './cpf-name/cpf-name.converter';\nimport { CpfNumberConverter } from './cpf-number/cpf-number.converter';\nimport { StreetNumberConverter } from './street-number/street-number.converter';\nimport { TextConverter } from './text/text.converter';\nimport { CheckboxConverter } from './checkbox/checkbox.converter';\nimport { SelectConverter } from './select/select.converter';\nimport { PinConverter } from './pin/pin.converter';\nimport { RadioGroupConverter } from './radio-group/radio-group.converter';\nimport { PricepointConverter } from './pricepoint/pricepoint.converter';\nimport { CouponConverter } from './coupon/coupon.converter';\nimport { CardYearConverter } from './card-year/card-year.converter';\nimport { PhoneConverter } from './phone.converter';\n\nexport const convertersMapToken = new InjectionToken<ConvertersMap>(\n 'ConvertersTokensMap'\n);\n\nexport const convertersMap: ConvertersMap = {\n card_number: CardNumberConverter,\n card_month: CardMonthConverter,\n card_year: CardYearConverter,\n cvv: CvvConverter,\n extra_cvv: CvvConverter,\n zip: ZipConverter,\n cardholdername: CardholderNameConverter,\n cpf_number: CpfNumberConverter,\n cpf_name: CpfNameConverter,\n birth_date: BirthDateConverter,\n text: TextConverter,\n check: CheckboxConverter,\n select: SelectConverter,\n pin: PinConverter,\n radiogroup: RadioGroupConverter,\n email: EmailConverter,\n psEmail: EmailConverter,\n bazitemail: EmailConverter,\n street_number: StreetNumberConverter,\n sum: PricepointConverter,\n out: PricepointConverter,\n couponCode: CouponConverter,\n phone: PhoneConverter,\n};\n","import { Inject, Injectable, Injector } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { Field } from '../../field.interface';\nimport { Converter } from '../converters/converter.abstract';\nimport { convertersMapToken } from '../converters/converters-map';\nimport { ConvertersMap } from '../converters/converters-map.interface';\nimport { ControlConfig } from './control-config';\n\n@Injectable()\nexport class ControlConfigService {\n public constructor(\n @Inject(convertersMapToken)\n private readonly convertersMap: ConvertersMap,\n private readonly injector: Injector\n ) {}\n\n public getFormControl(field: Field): UntypedFormControl | null {\n const converter = this.getConverter(field);\n\n if (!converter) {\n return null;\n }\n\n return converter.convertToFormControl(field);\n }\n\n public getConfig(field: Field): ControlConfig | null {\n const converter = this.getConverter(field);\n\n if (!converter) {\n return null;\n }\n\n return converter.convertToConfig(field);\n }\n\n public getConverter(field: Field | null): Converter | null {\n if (!field) {\n return null;\n }\n\n const sanitizedName = field.name.replace(/^fix_/i, '');\n let converter = this.convertersMap[sanitizedName];\n\n if (!converter) {\n converter = this.convertersMap[field.type];\n }\n\n if (!converter) {\n return null;\n }\n\n return this.injector.get<Converter>(converter);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { XpsBoolean } from '../../xps-boolean.enum';\nimport { Field } from '../field.interface';\nimport { ControlConfigService } from './controls/control-config.service';\nimport { FieldFormStates } from './field-form-states.interface';\nimport { FormState } from './form-state.interface';\nimport { FieldNames } from '../field-names.enum';\n\n@Injectable()\nexport class FormService {\n public fieldFormStates: FieldFormStates = {};\n\n public constructor(\n protected readonly controlConfigService: ControlConfigService\n ) {}\n\n public createForm(fields: Field[]): UntypedFormGroup {\n const controls: { [name: string]: UntypedFormControl } =\n this.getVisibleFields(fields).reduce(\n (result: { [key: string]: UntypedFormControl }, field: Field) => {\n const formControl: UntypedFormControl | null =\n this.controlConfigService.getFormControl(field);\n\n if (formControl) {\n result[field.name] = formControl;\n }\n\n return result;\n },\n {}\n );\n\n return new UntypedFormGroup(controls);\n }\n\n public getFieldFormState(fieldName: FieldNames): FormState | null {\n return this.fieldFormStates[fieldName] ?? null;\n }\n\n public updateFieldFormState(\n form: UntypedFormGroup,\n fields: Field[],\n fieldName: string,\n formState: FormState\n ): void {\n const field = fields.find(\n (fieldItem: Field) => fieldItem.name === fieldName\n );\n\n if (!field) {\n return;\n }\n\n const converter = this.controlConfigService.getConverter(field);\n const control = form.controls[fieldName];\n\n if (!control) {\n return;\n }\n\n this.fieldFormStates[fieldName] = {\n ...this.fieldFormStates[fieldName],\n ...formState,\n };\n control.setValidators(\n converter?.getValidators(field, this.fieldFormStates[fieldName]) ?? []\n );\n control.updateValueAndValidity();\n }\n\n private getVisibleFields(fields: Field[]): Field[] {\n return fields.filter(({ isVisible }) => isVisible === XpsBoolean.true);\n }\n}\n","export enum StatusSearchParam {\n token = 'token',\n pid = 'fix_pid',\n invoice = 'fix_invoice',\n signature = 'signature',\n locale = 'locale',\n testProject = 'fix_testProject',\n testPs = 'fix_testPs',\n testXsolla = 'fix_testXsolla',\n userReturnStatus = 'fix_userReturnStatus',\n isSavePaymentAccount = 'isSavePaymentAccount',\n}\n","import { StatusSearchParam } from './status-search-param.enum';\n\nexport const requiredStatusSearchParams = [\n StatusSearchParam.token,\n StatusSearchParam.locale,\n StatusSearchParam.signature,\n StatusSearchParam.pid,\n StatusSearchParam.invoice,\n];\n","import { StatusRequestParams } from './status-request-params.interface';\nimport { StatusSearchParam } from './status-search-param.enum';\n\ntype SearchParamConverter = (value: string) => string | number;\n\ninterface StatusSearchParamSettings {\n key: keyof StatusRequestParams;\n converter: SearchParamConverter;\n}\n\nconst stringConverter: SearchParamConverter = (value: string): string => value;\nconst numberConverter: SearchParamConverter = (value: string): number => {\n const numberValue = Number(value);\n return isNaN(numberValue) ? 0 : numberValue;\n};\n\nexport const statusSearchParamsMap = new Map<\n StatusSearchParam,\n StatusSearchParamSettings\n>([\n [\n StatusSearchParam.token,\n {\n key: 'token',\n converter: stringConverter,\n },\n ],\n [\n StatusSearchParam.signature,\n {\n key: 'signature',\n converter: stringConverter,\n },\n ],\n [\n StatusSearchParam.locale,\n {\n key: 'locale',\n converter: stringConverter,\n },\n ],\n [\n StatusSearchParam.userReturnStatus,\n {\n key: 'userReturnStatus',\n converter: stringConverter,\n },\n ],\n [\n StatusSearchParam.pid,\n {\n key: 'pid',\n converter: numberConverter,\n },\n ],\n [\n StatusSearchParam.invoice,\n {\n key: 'invoice',\n converter: numberConverter,\n },\n ],\n [\n StatusSearchParam.testProject,\n {\n key: 'testProject',\n converter: numberConverter,\n },\n ],\n [\n StatusSearchParam.testPs,\n {\n key: 'testPs',\n converter: numberConverter,\n },\n ],\n [\n StatusSearchParam.testXsolla,\n {\n key: 'testXsolla',\n converter: numberConverter,\n },\n ],\n [\n StatusSearchParam.isSavePaymentAccount,\n {\n key: 'isSavePaymentAccount',\n converter: stringConverter,\n },\n ],\n]);\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nexport abstract class XpsApiPart<Response> {\n public get response$(): Observable<Response> {\n return this.response\n .asObservable()\n .pipe(\n filter<Response | null, Response>(\n (response: Response | null): response is Response => response !== null\n )\n );\n }\n\n private readonly response: BehaviorSubject<Response | null> =\n new BehaviorSubject<Response | null>(null);\n\n public emitResponse(response: Response | null): void {\n this.response.next(response);\n }\n\n public get currentValue(): Response | null {\n return this.response.getValue();\n }\n\n protected abstract request(\n ...args: any[] // eslint-disable-line @typescript-eslint/no-explicit-any\n ): void | Promise<Response | void> | Promise<Response> | Observable<Response>;\n}\n","import { XpsApiPartRequest } from '../../../xps-api-part-request.abstract';\nimport { TokenError } from '../../../../exceptions-handling/errors/token-error.class';\nimport { StatusRequestParams } from '../status-request-params.interface';\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport class StatusRequest extends XpsApiPartRequest {\n public readonly access_token: string;\n public readonly xps_fix_command = 'status';\n public readonly xps_fix_invoice: number;\n public readonly xps_fix_pid: number;\n public readonly xps_signature: string;\n public readonly xps_locale: string;\n public readonly xps_fix_testProject: number | undefined;\n public readonly xps_fix_testPs: number | undefined;\n public readonly xps_fix_testXsolla: number | undefined;\n public readonly xps_fix_userReturnStatus: string | undefined;\n\n public constructor(parameters: StatusRequestParams) {\n super();\n\n if (!parameters.token) {\n throw new TokenError();\n }\n\n this.access_token = parameters.token;\n this.xps_fix_invoice = parameters.invoice;\n this.xps_fix_pid = parameters.pid;\n this.xps_signature = parameters.signature;\n this.xps_fix_testProject = parameters.testProject;\n this.xps_fix_testPs = parameters.testPs;\n this.xps_fix_testXsolla = parameters.testXsolla;\n this.xps_fix_userReturnStatus = parameters.userReturnStatus;\n this.xps_locale = parameters.locale;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { StatusRequest } from './status-request.class';\n\nexport type StatusRequestParameters = ConstructorParameters<\n typeof StatusRequest\n>;\n\nexport type StatusRequestFactory = (\n ...args: StatusRequestParameters\n) => StatusRequest;\n\nexport const statusRequestFactoryToken: InjectionToken<StatusRequestFactory> =\n new InjectionToken<StatusRequestFactory>('StatusRequest');\n\nexport const statusRequestFactoryProvider: ValueProvider = {\n provide: statusRequestFactoryToken,\n useValue: (...args: StatusRequestParameters) => new StatusRequest(...args),\n};\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { StatusResponse } from './status-response.class';\n\ntype ResponseParameters = ConstructorParameters<typeof StatusResponse>;\n\nexport type StatusResponseFactory = (\n ...args: ResponseParameters\n) => StatusResponse;\n\nexport const statusResponseFactoryToken: InjectionToken<StatusResponseFactory> =\n new InjectionToken<StatusResponseFactory>('StatusResponse');\n\nexport const statusResponseFactoryProvider: ValueProvider = {\n provide: statusResponseFactoryToken,\n useValue: (...args: ResponseParameters) => new StatusResponse(...args),\n};\n","import { lastValueFrom } from 'rxjs';\nimport { Injectable, Inject } from '@angular/core';\nimport { HttpHeaders } from '@angular/common/http';\nimport { XpsResponse, XpsStatus } from '../../xps-response.interface';\nimport { SettingsService } from '../../../settings/settings.service';\nimport { TerminalError } from '../../../exceptions-handling/errors/terminal-error.class';\nimport { SecureApiClient } from '../../../http/secure-api/secure-api.service';\nimport { XpsApiPart } from '../../xps-api-part.abstract';\nimport {\n StatusRequestFactory,\n statusRequestFactoryToken,\n} from './request/status-request.token';\nimport {\n StatusResponseFactory,\n statusResponseFactoryToken,\n} from './response/status-response.token';\nimport { StatusRequestParams } from './status-request-params.interface';\nimport { StatusResponse } from './response/status-response.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StatusRequestService extends XpsApiPart<StatusResponse> {\n private readonly apiRoute = 'directpayment';\n private requestParams!: StatusRequestParams;\n public constructor(\n private readonly secureApiClient: SecureApiClient,\n private readonly settingsService: SettingsService,\n @Inject(statusRequestFactoryToken)\n private readonly requestFactory: StatusRequestFactory,\n @Inject(statusResponseFactoryToken)\n private readonly responseFactory: StatusResponseFactory\n ) {\n super();\n }\n\n public setRequestParams(params: StatusRequestParams): void {\n this.requestParams = {\n locale: params.locale,\n testProject: params.testProject,\n testPs: params.testPs,\n testXsolla: params.testXsolla,\n userReturnStatus: params.userReturnStatus,\n invoice: params.invoice,\n pid: params.pid,\n signature: params.signature,\n };\n }\n\n public request(): void {\n const requestParams = this.requestFactory({\n token: this.settingsService.token,\n ...this.requestParams,\n });\n\n lastValueFrom(\n this.secureApiClient.post<XpsResponse>(\n this.apiRoute,\n new URLSearchParams(\n requestParams as unknown as { [key: string]: string }\n ),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n )\n .then((response: XpsResponse) => {\n const statusResponse = this.responseFactory({\n status: response.status as XpsStatus | null,\n errors: response.errors,\n form: response.form,\n payment_method: response.payment_method,\n });\n\n this.emitResponse(statusResponse);\n })\n .catch((e: TerminalError) => {\n throw new TerminalError(e.message, e.code);\n });\n }\n}\n","export function isNull(value: unknown): value is null {\n return value === null;\n}\n","export function isUndefined(value: unknown): value is undefined {\n return typeof value === 'undefined';\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { ExtendedWindow } from '../extended-window.interface';\nimport { SettingsService } from '../settings/settings.service';\nimport { isNull } from '../type-guards/is-null.function';\nimport { isUndefined } from '../type-guards/is-undefined.function';\nimport { windowToken } from '../window.token';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SessionService {\n private cache: { [key: string]: unknown } = {};\n\n public constructor(\n @Inject(windowToken) private readonly window: ExtendedWindow,\n private readonly settingsService: SettingsService\n ) {}\n\n /**\n * @param {string} key must be uniq entire all app\n * @param {unknown} value can be anything\n */\n public set(key: string, value: unknown): void {\n this.cache[key] = value;\n\n try {\n this.window.sessionStorage.setItem(\n this.getStorageKey(key),\n JSON.stringify(value)\n );\n } catch (error: unknown) {\n console.warn('Session storage not available.');\n }\n }\n\n public get<T>(key: string): T | null {\n const cacheValue: unknown = this.cache[key];\n\n if (!isUndefined(cacheValue)) {\n return cacheValue as T;\n }\n\n try {\n const storageValue = this.window.sessionStorage.getItem(\n this.getStorageKey(key)\n );\n\n if (isNull(storageValue)) {\n return null;\n }\n\n return JSON.parse(storageValue) as T;\n } catch (error: unknown) {\n return null;\n }\n }\n\n private getStorageKey(key: string): string {\n return `${key}${this.settingsService.token}`;\n }\n}\n","import { Price } from './price.interface';\n\nexport function extractMoneyCurrency<T>(\n money: (T & { amount?: null | number; currency?: string }) | undefined,\n allowZero = true\n): Price {\n return {\n amount: money?.amount ?? (allowZero ? 0 : null),\n currency: money?.currency ?? '',\n };\n}\n\nexport function createPriceOrUndefined(\n amount: number | undefined | null,\n currency: string | undefined\n): Price | undefined {\n return amount !== undefined && amount !== null && currency !== undefined\n ? {\n amount,\n currency,\n }\n : undefined;\n}\n","/**\n * default image for purchase item is set on Publisher Account side.\n * for purchase checkout items the image url is converted into base64 string.\n * to determine default image fixed templates are used\n */\nexport const defaultImagePatterns = [\n /^data:image\\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAAAAADmVT4XAAACMUlEQVR4Ae3YgYqdMBSE4fP/,\n /virtual_item_default_image/,\n];\n","export enum VatDetailsKey {\n vat = 'vat',\n vatPercent = 'vat-percent',\n vatIncluding = 'vat-including',\n vatPercentIncluding = 'vat-percent-including',\n\n vatIndia = 'vat-india',\n vatIndiaPercent = 'vat-india-percent',\n vatIndiaIncluding = 'vat-india-including',\n vatIndiaPercentIncluding = 'vat-india-percent-including',\n\n vatGhana = 'vat-ghana',\n vatGhanaIncluding = 'vat-ghana-including',\n}\n","export enum SalesTaxDetailsKey {\n salesTax = 'sales-tax',\n salesTaxPercent = 'sales-tax-percent',\n salesTaxIncluding = 'sales-tax-including',\n}\n","import { Injectable } from '@angular/core';\nimport { XpsSummary } from '../../xps-summary.interface';\nimport { XpsFinance } from '../../xps-finance.interface';\nimport { XpsPurchase } from '../../xps-purchase.interface';\nimport { CartItem } from '../cart-item.interface';\nimport { CartSummary } from '../cart-summary.interface';\nimport { createPriceOrUndefined, extractMoneyCurrency } from '../price.helpers';\nimport { defaultImagePatterns } from './default-image-patterns.const';\nimport { Price } from '../price.interface';\nimport { CartLine } from '../cart-line.interface';\nimport { FinanceDetails } from '../finance-details.interface';\nimport { VatDetailsKey } from '../vat-details-key.enum';\nimport { SalesTaxDetailsKey } from './sales-tax-details-key.enum';\n\n@Injectable({ providedIn: 'root' })\nexport class SummaryFinanceDetailsAdapterService {\n public getFinanceDetails(summary: XpsSummary): FinanceDetails {\n const { purchase, finance } = summary;\n return {\n purchase: purchase,\n finance: finance,\n cartItems: this.getCartItems(purchase, finance),\n cartSummary: this.getCartSummary(finance),\n paymentCountry: this.getPaymentCountry(finance),\n };\n }\n\n private shouldShowZeroIndirectTaxRate(finance: XpsFinance | null): boolean {\n return !!(finance?.vat?.visible ?? finance?.vat_user?.visible);\n }\n\n private isSalesTaxes(finance: XpsFinance | null): boolean {\n return !!(finance?.sales_tax?.amount ?? finance?.sales_tax_user?.amount);\n }\n\n private getCartItems(\n purchase: XpsPurchase,\n finance: XpsFinance | null\n ): CartItem[] {\n const checkouts: CartItem[] | undefined = purchase.checkout_items?.map(\n (item) => {\n return {\n imgSrc: item.image_url,\n hasDefaultImg: this.isDefaultImage(item.image_url),\n title: item.name,\n price: extractMoneyCurrency(item, false),\n priceBeforeDiscount: createPriceOrUndefined(\n item.amount_before_discount,\n item.currency\n ),\n quantity: item.quantity,\n description: item.description,\n tax: this.getTaxForItem(finance, item.indirect_tax_rate),\n isBonus: item.is_bonus,\n };\n }\n );\n\n const virtualCurrencies: CartItem[] | undefined =\n purchase.virtual_currency?.map((item) => {\n return {\n imgSrc: item.image_url,\n hasDefaultImg: this.isDefaultImage(item.image_url),\n title: `${item.quantity} ${item.name}`,\n price: extractMoneyCurrency(item),\n description: item.description,\n isBonus: item.is_bonus,\n };\n });\n\n const virtualItems: CartItem[] | undefined = purchase.virtual_items?.map(\n (item) => {\n return {\n imgSrc: item.image_url,\n hasDefaultImg: this.isDefaultImage(item.image_url),\n title: item.name,\n price: extractMoneyCurrency(item),\n description: item.description,\n quantity: item.quantity,\n isBonus: item.is_bonus,\n };\n }\n );\n\n let checkoutArray: CartItem[] | undefined = undefined;\n if (purchase.checkout) {\n checkoutArray = [\n {\n key: 'checkout',\n title: purchase.checkout.description,\n price: extractMoneyCurrency(purchase.checkout),\n isBonus: purchase.checkout.is_bonus ?? false,\n },\n ];\n }\n\n return [\n ...(checkouts ?? []),\n ...(virtualCurrencies ?? []),\n ...(virtualItems ?? []),\n ...(checkoutArray ?? []),\n ];\n }\n\n private getCartSummary(finance: XpsFinance | null): CartSummary {\n return {\n subtotal: {\n title: 'Subtotal',\n money: createPriceOrUndefined(\n finance?.sub_total?.amount,\n finance?.sub_total?.currency\n ),\n },\n subtotalPayment: {\n title: '',\n money: createPriceOrUndefined(\n finance?.sub_total?.payment_amount,\n finance?.sub_total?.payment_currency\n ),\n },\n total: {\n title: 'Total',\n money: extractMoneyCurrency(finance?.total),\n },\n totalDetails: this.getTaxesForTotalDetails(finance),\n subtotalDetails: [\n ...this.getSubtotalDetails(finance),\n ...this.getTaxesForSubtotalDetails(finance),\n ],\n };\n }\n\n private getPaymentCountry(finance: XpsFinance | null): string {\n return finance?.payment_country?.iso ?? '';\n }\n\n private getTaxForItem(\n finance: XpsFinance | null,\n indirectTaxRate?: number\n ): CartLine | null {\n if (\n indirectTaxRate ||\n (this.shouldShowZeroIndirectTaxRate(finance) && indirectTaxRate === 0)\n ) {\n if (this.isSalesTaxes(finance)) {\n return {\n key: SalesTaxDetailsKey.salesTaxPercent,\n content: `Sales tax ${indirectTaxRate}%`,\n rate: indirectTaxRate,\n };\n }\n\n if (this.isIndia(finance)) {\n return {\n key: VatDetailsKey.vatIndiaPercent,\n content: `GST ${indirectTaxRate}%`,\n rate: indirectTaxRate,\n };\n }\n\n if (this.isGhana(finance)) {\n return {\n key: VatDetailsKey.vatGhana,\n content: 'VAT, NHIL, GETFund Levy, and Covid-19 Levy',\n rate: indirectTaxRate,\n };\n }\n\n return {\n key: VatDetailsKey.vatPercent,\n content: `VAT ${indirectTaxRate}%`,\n rate: indirectTaxRate,\n };\n }\n return null;\n }\n\n private getSubtotalDetails(finance: XpsFinance | null): CartLine[] {\n if (!finance) {\n return [];\n }\n\n // subtotal details fields\n const subtotalDetailsSorting = [\n {\n key: 'discount',\n responseKey: 'discount',\n title: 'Discount',\n },\n {\n key: 'fee',\n responseKey: 'fee',\n title: 'Payment system fee',\n },\n {\n key: 'user-balance',\n responseKey: 'user_balance',\n title: 'Balance',\n },\n ];\n\n return subtotalDetailsSorting.map((sorting) => {\n const field = (finance as unknown as { [key: string]: unknown })[\n sorting.responseKey\n ] as Price;\n\n if (field) {\n return {\n key: sorting.key,\n title: sorting.title,\n money: {\n amount:\n sorting.key === 'discount' && field.amount\n ? -field.amount\n : field.amount,\n currency: field.currency,\n },\n };\n }\n return sorting;\n });\n }\n\n private getTaxesForSubtotalDetails(finance: XpsFinance | null): CartLine[] {\n const ret = [];\n\n // subtotal. VAT %p\n if (\n finance?.vat_user &&\n (finance?.vat_user?.amount ?? finance?.vat_user?.visible)\n ) {\n ret.push({\n key: this.getVatNotIncludingKeyForDetails(finance),\n title: this.getVatLabelForSubtotalDetails(finance),\n money: extractMoneyCurrency(finance?.vat_user),\n });\n }\n\n if (finance?.sales_tax_user?.amount) {\n ret.push({\n key: SalesTaxDetailsKey.salesTax,\n title: 'Sales tax',\n money: extractMoneyCurrency(finance?.sales_tax_user),\n });\n }\n\n return ret;\n }\n\n private getVatLabelForSubtotalDetails(finance: XpsFinance | null): string {\n if (this.isIndia(finance)) {\n return `GST ${finance?.vat_user?.percent ?? ''}%`;\n }\n\n if (this.isGhana(finance)) {\n return `VAT, NHIL, GETFund Levy, and Covid-19 Levy`;\n }\n\n return `VAT ${finance?.vat_user?.percent ?? ''}%`;\n }\n\n private getTaxesForTotalDetails(finance: XpsFinance | null): CartLine[] {\n const ret = [];\n\n // for totalDetails. VAT\n if (\n (finance?.vat?.amount || finance?.vat?.visible) &&\n !finance?.vat_user?.amount\n ) {\n ret.push({\n key: this.getVatIncludingKeyForDetails(finance),\n title: this.getVatLabelForTotalDetails(finance),\n money: extractMoneyCurrency(finance?.vat),\n });\n }\n\n if (finance?.sales_tax?.amount && !finance?.sales_tax_user?.amount) {\n ret.push({\n key: SalesTaxDetailsKey.salesTaxIncluding,\n title: 'Sales tax included',\n money: extractMoneyCurrency(finance?.sales_tax),\n });\n }\n\n return ret;\n }\n\n private getVatNotIncludingKeyForDetails(finance: XpsFinance | null): string {\n if (this.isIndia(finance)) {\n return VatDetailsKey.vatIndiaPercent;\n }\n\n if (this.isGhana(finance)) {\n return VatDetailsKey.vatGhana;\n }\n\n return VatDetailsKey.vatPercent;\n }\n\n private getVatIncludingKeyForDetails(finance: XpsFinance | null): string {\n if (this.isIndia(finance)) {\n return VatDetailsKey.vatIndiaPercentIncluding;\n }\n\n if (this.isGhana(finance)) {\n return VatDetailsKey.vatGhanaIncluding;\n }\n\n return VatDetailsKey.vatPercentIncluding;\n }\n\n private getVatLabelForTotalDetails(finance: XpsFinance | null): string {\n if (this.isIndia(finance)) {\n return `Including ${finance?.vat.percent ?? ''}% GST`;\n }\n\n if (this.isGhana(finance)) {\n return 'Including VAT, NHIL, GETFund Levy, and Covid-19 Levy';\n }\n\n return `Including ${finance?.vat.percent ?? ''}% VAT`;\n }\n\n private isIndia(finance: XpsFinance | null): boolean {\n return finance?.payment_country.iso === 'IN';\n }\n\n private isGhana(finance: XpsFinance | null): boolean {\n return finance?.payment_country.iso === 'GH';\n }\n\n private isDefaultImage(url: string): boolean {\n return defaultImagePatterns.some((regex) => regex.test(url));\n }\n}\n","export const fieldsWithCurrency = new Set([\n 'sum',\n 'commissionUserVatPrc',\n 'salesTaxCommission',\n 'vatUserNotIncluded',\n 'xsollaTipsAmount',\n 'paymentSystemFee',\n 'discount',\n 'userWallet',\n 'subtotal',\n 'subtotalSummaryBeforeConversion',\n 'grandTotal',\n 'subtotalBeforeDiscount',\n 'redeemedPoints',\n]);\n","export enum CountryIsoCode {\n India = 'IN',\n Ghana = 'GH',\n}\n","import { Injectable } from '@angular/core';\nimport { StatusFinanceInfo } from '../../status/status-finance-info.interface';\nimport { Status } from '../../status/status.interface';\nimport { FinanceDetails } from '../finance-details.interface';\nimport { FinanceInfoWithAmountAndCurrency } from './finance-info.interface';\nimport { FinanceInfoField } from '../../status/finance-info-field.interface';\nimport { fieldsWithCurrency } from './fields-with-currency';\nimport { CartLine } from '../cart-line.interface';\nimport { extractMoneyCurrency } from '../price.helpers';\nimport { FieldWithAmountAndCurrency } from './field-with-amount-and-currency.interface';\nimport { CartSummary } from '../cart-summary.interface';\nimport { CountryIsoCode } from '../../../country/country-iso-code.enum';\nimport { VatDetailsKey } from '../vat-details-key.enum';\nimport { XpsPurchase } from '../../xps-purchase.interface';\nimport { CartItem } from '../cart-item.interface';\nimport { XpsFinance } from '../../xps-finance.interface';\nimport { StatusOrder } from '../../status/status-order.interface';\nimport { SummaryFinanceDetailsAdapterService } from '../summary/summary-finance-details-adapter.service';\nimport { StatusEnum } from '../../status/status.enum';\n\n@Injectable({ providedIn: 'root' })\nexport class StatusFinanceDetailsAdapterService {\n public constructor(\n private readonly summarFinanceDetailsAdapterService: SummaryFinanceDetailsAdapterService\n ) {}\n\n public getFinanceDetails(\n status: Status,\n purchase: XpsPurchase | null\n ): FinanceDetails {\n const financeInfo = this.fillFinanceInfo(status.financeInfo);\n const country = status.paymentCountryIso;\n const order = status.order ?? null;\n\n const summaryFinance = this.convertStatusFinanceToSummaryFinance(\n purchase,\n order,\n country\n );\n\n return {\n purchase,\n finance: summaryFinance,\n cartItems: this.getCartItems(purchase, summaryFinance),\n cartSummary: this.getCartSummary(status, financeInfo, country),\n paymentCountry: country,\n };\n }\n\n private fillFinanceInfo(\n financeInfo: StatusFinanceInfo\n ): FinanceInfoWithAmountAndCurrency {\n return Object.keys(financeInfo).reduce(\n (\n financeInfoWithAmountAndCurrency: FinanceInfoWithAmountAndCurrency,\n key: string\n ) => {\n const field: FinanceInfoField = financeInfo[key];\n\n if (field?.key && fieldsWithCurrency.has(field?.key)) {\n this.addAmountAndCurrencyToField(field);\n }\n return { ...financeInfoWithAmountAndCurrency, [key]: field };\n },\n {}\n );\n }\n\n private addAmountAndCurrencyToField(field: {\n key?: string;\n pref?: string;\n value?: string;\n amount?: number;\n currency?: string;\n }): void {\n const amountAndCurrency = /(^[-\\d.]+) ([A-Z]{3})$/;\n const currencyParts = field.value?.trim().match(amountAndCurrency);\n\n if (currencyParts) {\n const amountPosition = 1;\n const currencyPosition = 2;\n field.amount = Number(currencyParts[amountPosition]);\n field.currency = currencyParts[currencyPosition];\n }\n }\n\n private getCartItems(\n purchase: XpsPurchase | null,\n summaryFinance: XpsFinance | null\n ): CartItem[] | null {\n if (!purchase) {\n return null;\n }\n\n const financeDetails =\n this.summarFinanceDetailsAdapterService.getFinanceDetails({\n purchase,\n finance: summaryFinance,\n });\n\n return financeDetails.cartItems;\n }\n\n private convertStatusFinanceToSummaryFinance(\n purchase: XpsPurchase | null,\n order: StatusOrder | null,\n country: string\n ): XpsFinance | null {\n if (!order || !purchase?.checkout_items?.length) {\n return null;\n }\n\n const finance = {\n payment_country: {\n iso: country,\n },\n } as XpsFinance;\n\n const firstCheckoutItem = purchase?.checkout_items[0];\n const firstCheckoutItemAmount = firstCheckoutItem?.amount ?? 0;\n const oneHundredPercent = 100;\n const taxAmount =\n (firstCheckoutItemAmount * firstCheckoutItem?.indirect_tax_rate) /\n oneHundredPercent;\n\n if (order.contained_taxes?.sales_tax) {\n finance.sales_tax = {\n amount: taxAmount,\n percent: firstCheckoutItem?.indirect_tax_rate,\n currency: purchase?.checkout?.currency ?? '',\n };\n }\n\n if (order.contained_taxes?.user_vat) {\n finance.vat = {\n amount: taxAmount,\n percent: firstCheckoutItem?.indirect_tax_rate,\n currency: purchase?.checkout?.currency ?? '',\n visible: true,\n };\n }\n\n return finance;\n }\n\n private getCartSummary(\n status: Status,\n financeInfo: FinanceInfoWithAmountAndCurrency,\n country: string\n ): CartSummary {\n const cart: CartSummary = {\n total: this.getTotal(financeInfo),\n totalDetails: this.getTotalDetails(financeInfo, country),\n subtotalDetails: [\n ...this.getSubtotalDetails(financeInfo),\n ...this.getTaxesForSubtotalDetails(financeInfo, country),\n ],\n transactionDetails: this.getTransactionDetails(status, financeInfo),\n subtotal: this.getInitialCurrencySubtotal(financeInfo) ?? null,\n subtotalPayment: this.getSubtotalPayment(financeInfo) ?? null,\n };\n\n return cart;\n }\n\n private getTotal(financeInfo: FinanceInfoWithAmountAndCurrency): CartLine {\n return {\n title: 'Total',\n money: extractMoneyCurrency(\n financeInfo.sum as FieldWithAmountAndCurrency\n ),\n };\n }\n\n private getSubtotalPayment(\n financeInfo: FinanceInfoWithAmountAndCurrency\n ): CartLine | null {\n if (!financeInfo?.subtotal) {\n return null;\n }\n\n return {\n title: 'Subtotal',\n money: extractMoneyCurrency(\n financeInfo.subtotal as FieldWithAmountAndCurrency\n ),\n };\n }\n\n private getInitialCurrencySubtotal(\n financeInfo: FinanceInfoWithAmountAndCurrency\n ): CartLine | null {\n if (!financeInfo?.subtotalSummaryBeforeConversion) {\n return null;\n }\n\n return {\n title: '',\n money: extractMoneyCurrency(financeInfo.subtotalSummaryBeforeConversion),\n };\n }\n\n private getTotalDetails(\n financeInfo: FinanceInfoWithAmountAndCurrency,\n country: string\n ): CartLine[] {\n const totalDetails: CartLine[] = [];\n\n const salesTaxCommissionField = financeInfo[\n 'salesTaxCommission'\n ] as FieldWithAmountAndCurrency;\n if (salesTaxCommissionField) {\n totalDetails.push({\n title: salesTaxCommissionField.pref,\n money: {\n amount: salesTaxCommissionField.amount ?? null,\n currency: salesTaxCommissionField.currency ?? '',\n },\n });\n }\n\n const commissionUserVatPrcField = financeInfo[\n 'commissionUserVatPrc'\n ] as FieldWithAmountAndCurrency;\n\n if (commissionUserVatPrcField?.pref) {\n const percents = this.getPercents(commissionUserVatPrcField.pref);\n\n totalDetails.push({\n key: this.getVatIncludingKeyDetails(percents, country),\n title: this.geVatIncludingTitleDetails(percents, country),\n money: {\n amount: commissionUserVatPrcField.amount ?? null,\n currency: commissionUserVatPrcField.currency ?? '',\n },\n });\n }\n return totalDetails;\n }\n\n private getSubtotalDetails(\n financeInfo: FinanceInfoWithAmountAndCurrency\n ): CartLine[] {\n const subtotalDetailsSorting = [\n {\n key: 'discount',\n responseKey: 'discount',\n title: 'Discount',\n },\n {\n key: 'fee',\n responseKey: 'paymentSystemFee',\n title: 'Payment system fee',\n },\n {\n key: 'user-balance',\n responseKey: 'userWallet',\n title: 'Balance',\n },\n ];\n\n const redeemedPoints = financeInfo['redeemedPoints'];\n\n if (redeemedPoints?.pref) {\n subtotalDetailsSorting.push({\n key: 'redeem-points',\n responseKey: 'redeemedPoints',\n title: redeemedPoints.pref,\n });\n }\n\n return subtotalDetailsSorting.reduce(\n (\n subTotalDetails: CartLine[],\n sorting: { responseKey: string; title: string }\n ) => {\n const field = financeInfo[\n sorting.responseKey\n ] as FieldWithAmountAndCurrency;\n if (field) {\n subTotalDetails.push({\n title: sorting.title,\n money: {\n amount: field.amount ?? null,\n currency: field.currency ?? '',\n },\n });\n }\n return subTotalDetails;\n },\n []\n );\n }\n\n private getTaxesForSubtotalDetails(\n financeInfo: FinanceInfoWithAmountAndCurrency,\n country: string\n ): CartLine[] {\n const taxesForSubtotalDetails: CartLine[] = [];\n const vatUserNotIncludedField = financeInfo[\n 'vatUserNotIncluded'\n ] as FieldWithAmountAndCurrency;\n if (vatUserNotIncludedField?.pref) {\n const percents = this.getPercents(vatUserNotIncludedField.pref);\n taxesForSubtotalDetails.push({\n key: this.getVatNotIncludingKeyDetails(percents, country),\n title: this.getVatNotIncludingTitleDetails(percents, country),\n money: {\n amount: vatUserNotIncludedField.amount ?? null,\n currency: vatUserNotIncludedField.currency ?? '',\n },\n });\n }\n\n return taxesForSubtotalDetails;\n }\n\n private getVatNotIncludingKeyDetails(\n percents: string | null,\n country: string\n ): string {\n if (this.isIndia(country)) {\n return percents ? VatDetailsKey.vatIndiaPercent : VatDetailsKey.vatIndia;\n }\n\n if (this.isGhana(country)) {\n return VatDetailsKey.vatGhana;\n }\n\n return percents ? VatDetailsKey.vatPercent : VatDetailsKey.vat;\n }\n\n private getVatNotIncludingTitleDetails(\n percents: string | null,\n country: string\n ): string {\n if (this.isIndia(country)) {\n return percents ? `GST ${percents}%` : 'GST';\n }\n\n if (this.isGhana(country)) {\n return 'VAT, NHIL, GETFund Levy, and Covid-19 Levy';\n }\n\n return percents ? `VAT ${percents}%` : 'VAT';\n }\n\n private getVatIncludingKeyDetails(\n percents: string | null,\n country: string\n ): string {\n if (this.isIndia(country)) {\n return percents\n ? VatDetailsKey.vatIndiaPercentIncluding\n : VatDetailsKey.vatIndiaIncluding;\n }\n\n if (this.isGhana(country)) {\n return VatDetailsKey.vatGhanaIncluding;\n }\n\n return percents\n ? VatDetailsKey.vatPercentIncluding\n : VatDetailsKey.vatIncluding;\n }\n\n private geVatIncludingTitleDetails(\n percents: string | null,\n country: string\n ): string {\n if (this.isIndia(country)) {\n return percents ? `Including ${percents}% GST` : 'Including GST';\n }\n\n if (this.isGhana(country)) {\n return 'Including VAT, NHIL, GETFund Levy, and Covid-19 Levy';\n }\n\n return percents ? `Including ${percents}% VAT` : `Including VAT`;\n }\n\n private isGhana(country: string): boolean {\n return country === CountryIsoCode.Ghana;\n }\n\n private isIndia(country: string): boolean {\n return country === CountryIsoCode.India;\n }\n\n private getTransactionDetails(\n status: Status,\n financeInfo: FinanceInfoWithAmountAndCurrency\n ): CartLine[] {\n const transactionDetails: CartLine[] = [];\n if (financeInfo.invoice?.value) {\n transactionDetails.push({\n key: 'invoice',\n title: 'Transaction',\n content: financeInfo.invoice.value,\n });\n }\n\n const isCompleted =\n status.isCancelUser ||\n (status.statusState !== StatusEnum.processing &&\n status.statusState !== StatusEnum.created &&\n status.statusState !== StatusEnum.held);\n if (isCompleted && financeInfo.time?.value) {\n transactionDetails.push({\n key: 'time',\n title: 'Date',\n content: financeInfo.time.value,\n isDateLine: true,\n });\n }\n return transactionDetails;\n }\n\n private getPercents(value: string): string | null {\n const percentsTemplate = /(\\d+(.\\d+)?)/;\n const percentsMatchResult = percentsTemplate.exec(value);\n\n if (!percentsMatchResult) {\n return null;\n }\n\n return percentsMatchResult[0];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { EmitDataService } from '../emit-data.service.abstract';\nimport { Status } from '../status/status.interface';\nimport { XpsSummary } from '../xps-summary.interface';\nimport { FinanceDetails } from './finance-details.interface';\nimport { StatusFinanceDetailsAdapterService } from './status/status-finance-details-adapter.service';\nimport { SummaryFinanceDetailsAdapterService } from './summary/summary-finance-details-adapter.service';\nimport { SessionService } from '../../session/session.service';\nimport { XpsPurchase } from '../xps-purchase.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class FinanceDetailsService extends EmitDataService<FinanceDetails> {\n private readonly purchaseSessionKey = 'purchase';\n\n public constructor(\n private readonly sessionService: SessionService,\n private readonly summaryFinanceDetailsAdapterService: SummaryFinanceDetailsAdapterService,\n private readonly statusFinanceDetailsAdapterService: StatusFinanceDetailsAdapterService\n ) {\n super();\n }\n\n public emitWithSummary(summary?: XpsSummary): void {\n if (summary) {\n const financeDetails =\n this.summaryFinanceDetailsAdapterService.getFinanceDetails(summary);\n\n if (financeDetails.purchase) {\n this.sessionService.set(\n this.purchaseSessionKey,\n financeDetails.purchase\n );\n }\n\n super.emit(financeDetails);\n }\n }\n\n public emitWithStatus(status?: Status): void {\n if (status) {\n const purchase = this.sessionService.get<XpsPurchase>(\n this.purchaseSessionKey\n );\n const financeDetails =\n this.statusFinanceDetailsAdapterService.getFinanceDetails(\n status,\n purchase\n );\n super.emit(financeDetails);\n }\n }\n}\n","import { XpsApiPartRequest } from '../../../xps-api-part-request.abstract';\nimport { TokenError } from '../../../../exceptions-handling/errors/token-error.class';\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport class CheckStatusRequest extends XpsApiPartRequest {\n public readonly access_token: string;\n public readonly xps_fix_command = 'status';\n public readonly invoice: number;\n public readonly section = 'getstatus';\n\n public constructor(token: string | null, invoice: number) {\n super();\n\n if (token === null) {\n throw new TokenError();\n }\n\n this.access_token = token;\n this.invoice = invoice;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { CheckStatusRequest } from './check-status-request.class';\n\nexport type CheckStatusRequestParameters = ConstructorParameters<\n typeof CheckStatusRequest\n>;\n\nexport type CheckStatusRequestFactory = (\n ...args: CheckStatusRequestParameters\n) => CheckStatusRequest;\n\nexport const checkStatusRequestFactoryToken: InjectionToken<CheckStatusRequestFactory> =\n new InjectionToken<CheckStatusRequestFactory>('CheckStatusRequest');\n\nexport const checkStatusRequestFactoryProvider: ValueProvider = {\n provide: checkStatusRequestFactoryToken,\n useValue: (...args: CheckStatusRequestParameters) =>\n new CheckStatusRequest(...args),\n};\n","import { Properties } from '../../../../properties.type';\nimport { StatusEnum } from '../../status.enum';\n\n/* eslint-disable @typescript-eslint/naming-convention */\nexport class CheckStatusResponse {\n public readonly status?: StatusEnum;\n public readonly final?: boolean;\n public readonly isPaymentAccountAttached?: boolean;\n\n public constructor(parameters: Properties<CheckStatusResponse>) {\n this.status = parameters.status;\n this.final = parameters.final;\n this.isPaymentAccountAttached = parameters.isPaymentAccountAttached;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { CheckStatusResponse } from './check-status-response.class';\n\ntype ResponseParameters = ConstructorParameters<typeof CheckStatusResponse>;\n\nexport type CheckStatusResponseFactory = (\n ...args: ResponseParameters\n) => CheckStatusResponse;\n\nexport const checkStatusResponseFactoryToken: InjectionToken<CheckStatusResponseFactory> =\n new InjectionToken<CheckStatusResponseFactory>('CheckStatusResponse');\n\nexport const checkStatusResponseFactoryProvider: ValueProvider = {\n provide: checkStatusResponseFactoryToken,\n useValue: (...args: ResponseParameters) => new CheckStatusResponse(...args),\n};\n","import { Inject, Injectable } from '@angular/core';\nimport { SettingsService } from '../../../settings/settings.service';\nimport { XpsResponse } from '../../xps-response.interface';\nimport { StatusEnum } from '../status.enum';\nimport { ResponseError } from '../../../exceptions-handling/errors/response-error.class';\nimport {\n CheckStatusRequestFactory,\n checkStatusRequestFactoryToken,\n} from './request/check-status-request.token';\nimport {\n CheckStatusResponseFactory,\n checkStatusResponseFactoryToken,\n} from './response/check-status-response.token';\nimport { XpsApiPart } from '../../xps-api-part.abstract';\nimport { XpsApiService } from '../../xps-api/xps-api.service';\nimport { CheckStatusResponse } from './response/check-status-response.class';\nimport { XpsResponseErrorsMappingService } from '../../../errors-mapping/xps-response-errors-mapping.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CheckStatusService extends XpsApiPart<CheckStatusResponse> {\n private invoice!: number;\n\n public constructor(\n private readonly xpsApiService: XpsApiService,\n private readonly settingsService: SettingsService,\n private readonly xpsResponseErrorsMappingService: XpsResponseErrorsMappingService,\n @Inject(checkStatusRequestFactoryToken)\n private readonly requestFactory: CheckStatusRequestFactory,\n @Inject(checkStatusResponseFactoryToken)\n private readonly responseFactory: CheckStatusResponseFactory\n ) {\n super();\n }\n\n public setRequestParams(invoice: number): void {\n this.invoice = invoice;\n }\n\n public request(): void {\n const requestParams = this.requestFactory(\n this.settingsService.token,\n this.invoice\n );\n\n this.xpsApiService\n .directPaymentRequest(requestParams)\n .then((xpsResponse: XpsResponse) => {\n const response =\n this.xpsResponseErrorsMappingService.mapErrors(xpsResponse);\n const checkStatusResponse = this.responseFactory({\n status: response.status as StatusEnum,\n final: response.final,\n isPaymentAccountAttached: response.is_payment_account_attached,\n });\n\n this.emitResponse(checkStatusResponse);\n })\n .catch((error: Error) => {\n throw new ResponseError(error.message);\n });\n }\n}\n","export enum WebSocketStatus {\n statusChanged = 'status_changed',\n troubledStatus = 'troubled_status',\n}\n","export enum WebSocketClientType {\n nchan = 'nchan',\n centrifugo = 'centrifugo',\n}\n","import { Observable, Subject, Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { WebSocketClient } from './web-socket.interface';\nimport { WebSocketClientType } from './web-socket-client-type.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NchanWebSocketService implements WebSocketClient {\n public static readonly reconnectionTimeoutIncrementFactor = 2;\n\n public url!: string;\n\n public type = WebSocketClientType.nchan;\n\n private static readonly timeoutsMs = {\n reconnection: 1500,\n reconnectionMaxDeviation: 1500,\n };\n\n private openPromise: Promise<unknown> | undefined;\n\n private reconnectionTimeoutMs!: number;\n private reconnectionTimerId: ReturnType<typeof setTimeout> | null = null;\n\n private readonly openConnectionTimerId: number | undefined;\n\n private connection!: WebSocket;\n\n private readonly incomingMessages$: Subject<MessageEvent> =\n new Subject<MessageEvent>();\n private readonly successfulReconnectionEventsProxy$: Subject<void> =\n new Subject<void>();\n\n public async open(): Promise<unknown> {\n if (this.openPromise && !this.isClosed()) {\n return this.openPromise;\n }\n\n this.openPromise = this.createConnection()\n .catch(async () => {\n return this.waitWhileNotReconnect();\n })\n .then(() => {\n this.connection.onclose = async () => this.open();\n });\n\n return this.openPromise;\n }\n\n public close(): void {\n this.clearReconnectionTimer();\n\n if (this.isClosed()) {\n return;\n }\n\n this.connection.onclose = null;\n this.connection.close();\n }\n\n public get messages$(): Observable<string> {\n return this.incomingMessages$\n .asObservable()\n .pipe(map((event: MessageEvent<string>) => event.data));\n }\n\n public subscribeOnSuccessfulReconnection(next?: () => void): Subscription {\n return this.successfulReconnectionEventsProxy$\n .asObservable()\n .subscribe(next);\n }\n\n private isClosed(): boolean {\n if (!this.connection) {\n return true;\n }\n\n return [this.connection.CLOSED, this.connection.CLOSING].includes(\n this.connection.readyState\n );\n }\n\n private clearReconnectionTimer(): void {\n if (this.reconnectionTimerId) {\n clearTimeout(this.reconnectionTimerId);\n this.reconnectionTimerId = null;\n }\n }\n\n private setFirstReconnectionTimeout(): void {\n const min =\n NchanWebSocketService.timeoutsMs.reconnection -\n NchanWebSocketService.timeoutsMs.reconnectionMaxDeviation;\n const max =\n NchanWebSocketService.timeoutsMs.reconnection +\n NchanWebSocketService.timeoutsMs.reconnectionMaxDeviation;\n this.reconnectionTimeoutMs =\n Math.floor(Math.random() * (max - min + 1)) + min;\n }\n\n private incrementReconnectionTimeout(): void {\n this.reconnectionTimeoutMs =\n this.reconnectionTimeoutMs *\n NchanWebSocketService.reconnectionTimeoutIncrementFactor;\n }\n\n private async createConnection(): Promise<unknown> {\n this.connection = new WebSocket(this.url);\n this.connection.onmessage = this.incomingMessages$.next.bind(\n this.incomingMessages$\n );\n\n return new Promise<void>((resolve, reject) => {\n this.connection.onopen = () => {\n clearTimeout(this.openConnectionTimerId);\n resolve();\n };\n\n this.connection.onclose = () => {\n reject();\n };\n });\n }\n\n private async reconnect(): Promise<boolean> {\n this.clearReconnectionTimer();\n\n return new Promise((resolve) => {\n this.reconnectionTimerId = setTimeout(() => {\n this.createConnection()\n .then(() => resolve(true))\n .catch(() => resolve(false));\n this.incrementReconnectionTimeout();\n }, this.reconnectionTimeoutMs);\n });\n }\n\n private async waitWhileNotReconnect(): Promise<void> {\n this.clearReconnectionTimer();\n this.setFirstReconnectionTimeout();\n\n let isConnected = false;\n\n while (!isConnected) {\n isConnected = await this.reconnect();\n }\n\n this.successfulReconnectionEventsProxy$.next();\n }\n}\n","import { ErrorTags } from './elk-error-types.enum';\n\nimport { TaggedError } from './tagged-error.class';\n\nexport class WsError extends TaggedError {\n public constructor(message: string, channelName: string, tags?: ErrorTags[]) {\n tags = tags ? [...tags, ErrorTags.WS] : [ErrorTags.WS];\n\n const messageWithChannel = `${message}. ChannelName - ${channelName}`;\n\n super(messageWithChannel, tags);\n }\n}\n","import type StackTrace from 'stacktrace-js';\nimport { firstValueFrom } from 'rxjs';\nimport {\n ErrorHandler,\n Inject,\n Injectable,\n isDevMode,\n NgZone,\n} from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { windowToken } from '../../window.token';\nimport { SettingsService } from '../../settings/settings.service';\nimport { ExtendedWindow } from '../../extended-window.interface';\nimport { TaggedError } from '../errors/tagged-error.class';\nimport { ErrorTags } from '../errors/elk-error-types.enum';\nimport { AdditionalInfo } from './additional-info.interface';\nimport { ErrorWithoutMetaFields } from './error-without-meta-fields.interface';\nimport { LogMessage } from './log-message.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ElkLoggerService implements ErrorHandler {\n private readonly stackTrace: Promise<typeof StackTrace>;\n private readonly vendors: RegExp = new RegExp(\n 'node_modules\\\\/(@angular|zone).*.js$'\n );\n\n public constructor(\n @Inject(windowToken) private readonly window: ExtendedWindow,\n private readonly settingsService: SettingsService,\n private readonly http: HttpClient,\n private readonly ngZone: NgZone\n ) {\n this.stackTrace = this.loadStackTrace();\n }\n\n public handleError(error: Error): void {\n this.ngZone.runOutsideAngular(() => {\n if (isDevMode()) {\n console.error(error);\n return;\n }\n\n this.parseError(error).catch(console.log);\n });\n }\n\n public log(\n message: string,\n tags: ErrorTags[],\n extra?: { [key: string]: unknown }\n ): void {\n const logTags = [ErrorTags.HEADLESS_UI, ...tags];\n\n if (isDevMode()) {\n console.log(message, tags);\n return;\n }\n\n const logMessage: LogMessage = {\n additionalInfo: this.getAdditionalInfo(),\n extra,\n message,\n };\n\n this.sendLog(logMessage, logTags);\n }\n\n private async parseError(error: Error): Promise<TaggedError> {\n const errorObj =\n error instanceof TaggedError\n ? error\n : new TaggedError(error.message || error.toString());\n\n errorObj.trace = await this.getErrorTrace(errorObj);\n errorObj.additionalInfo = this.getAdditionalInfo();\n\n const { tags } = errorObj;\n\n const cleanError = this.removeErrorMetaFields(errorObj);\n\n this.sendLog(cleanError, tags);\n return errorObj;\n }\n\n private async loadStackTrace(): Promise<typeof StackTrace> {\n const library = await import('stacktrace-js');\n return library.default;\n }\n\n private async getErrorTrace(error: Error): Promise<string> {\n const stackTrace = await this.stackTrace;\n\n const stackFramesArr = await stackTrace.fromError(error);\n\n const filteredFramesArr = stackFramesArr.filter(\n ({ fileName }) => fileName && !this.vendors.test(fileName)\n );\n\n return filteredFramesArr\n .map((stackFrame) => stackFrame.toString())\n .join('\\n');\n }\n\n private getAdditionalInfo(): AdditionalInfo {\n const extractUrlHost = (url: string): string =>\n url.replace(/^https?:\\/\\/([^/?#]+).*$/i, '$1');\n\n return {\n location: {\n url: this.window.location.href,\n },\n project: {\n id: this.settingsService.project.id,\n },\n referrer: {\n url: this.window.document.referrer,\n },\n viewport: {\n width: this.window.document.documentElement.clientWidth,\n height: this.window.document.documentElement.clientHeight,\n },\n cdn_address: this.settingsService.settings.cdnUrl\n ? extractUrlHost(this.settingsService.settings.cdnUrl)\n : 'none',\n country: this.settingsService.user.country.value,\n local: this.settingsService.user.country.localized_name,\n };\n }\n\n private removeErrorMetaFields(error: TaggedError): ErrorWithoutMetaFields {\n const metaPropList = [\n 'parentTag',\n 'childTag',\n 'RESTRICTED_KEYS_REGEXP',\n 'tags',\n ];\n\n Object.keys(error).forEach((key) => {\n if (metaPropList.includes(key)) delete error[key as keyof TaggedError];\n });\n\n // implementing own 'message' property from prototype\n return { ...error, message: error.message };\n }\n\n private sendLog(\n message: ErrorWithoutMetaFields | LogMessage,\n tags: ErrorTags[]\n ): void {\n const url = `https://logs-01.xsolla.com/tag/${tags.join(',')}`;\n\n firstValueFrom(\n this.http.post(url, message, {\n headers: new HttpHeaders().set('Content-Type', 'text/plain'),\n responseType: 'text',\n })\n ).catch((err) => console.error('Elk Logger: request error', err));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport type {\n Centrifuge,\n DisconnectedContext,\n PublicationContext,\n Subscription as CentrifugeSubscription,\n} from 'centrifuge';\nimport { StreamPosition, SubscriptionOptions } from 'centrifuge/build/types';\nimport { ElkLoggerService } from '../exceptions-handling/elk/elk-logger.service';\nimport { WsError } from '../exceptions-handling/errors/ws-error.class';\nimport { ErrorTags } from '../exceptions-handling/errors/elk-error-types.enum';\nimport { WebSocketClient } from './web-socket.interface';\nimport { WebSocketClientType } from './web-socket-client-type.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CentrifugoWebSocketService implements WebSocketClient {\n public static readonly reconnectionTimeoutIncrementFactor = 2;\n\n public type = WebSocketClientType.centrifugo;\n\n private static readonly timeoutsMs = {\n reconnection: 1000,\n reconnectionMaxDeviation: 1000,\n };\n\n private reconnectionTimeoutMs!: number;\n private reconnectionTimerId: ReturnType<typeof setTimeout> | null = null;\n\n private readonly openConnectionTimerId: number | undefined;\n\n private connection!: Centrifuge;\n private subscription!: CentrifugeSubscription;\n private subscriptionPosition?: StreamPosition;\n private isConnectionOpen = false;\n private isConnecting = false;\n private url!: string;\n private channel!: string;\n private prevSubscribedChannel?: string;\n\n private readonly incomingMessages$: Subject<PublicationContext> =\n new Subject<PublicationContext>();\n\n private readonly successfulReconnectionEventsProxy$: Subject<void> =\n new Subject<void>();\n\n public constructor(private readonly elkLoggerService: ElkLoggerService) {}\n\n public async open(url: string, channel: string): Promise<void> {\n if (url === this.url && channel === this.channel) {\n return;\n }\n\n try {\n this.url = url;\n this.channel = channel;\n await this.createConnection(url, channel);\n } catch (error: unknown) {\n // @ts-expect-error error is unknown\n const message = (error?.message || error) as string;\n const unknownError = new WsError(\n `unknown websocket error: ${message}`,\n channel\n );\n\n this.elkLoggerService.handleError(unknownError);\n }\n }\n\n public close(): void {\n this.clearReconnectionTimer();\n\n if (!this.isConnectionOpen) {\n return;\n }\n\n this.connection.disconnect();\n }\n\n public get messages$(): Observable<string> {\n return (\n this.incomingMessages$\n .asObservable()\n // event don't respect type from argument, it's weird\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n .pipe(map((event) => event.data))\n );\n }\n\n public subscribeOnSuccessfulReconnection(next?: () => void): Subscription {\n return this.successfulReconnectionEventsProxy$\n .asObservable()\n .subscribe(next);\n }\n\n private clearReconnectionTimer(): void {\n if (this.reconnectionTimerId) {\n clearTimeout(this.reconnectionTimerId);\n this.reconnectionTimerId = null;\n }\n }\n\n private setFirstReconnectionTimeout(): void {\n const min =\n CentrifugoWebSocketService.timeoutsMs.reconnection -\n CentrifugoWebSocketService.timeoutsMs.reconnectionMaxDeviation;\n const max =\n CentrifugoWebSocketService.timeoutsMs.reconnection +\n CentrifugoWebSocketService.timeoutsMs.reconnectionMaxDeviation;\n this.reconnectionTimeoutMs =\n Math.floor(Math.random() * (max - min + 1)) + min;\n }\n\n private incrementReconnectionTimeout(): void {\n this.reconnectionTimeoutMs =\n this.reconnectionTimeoutMs *\n CentrifugoWebSocketService.reconnectionTimeoutIncrementFactor;\n }\n\n private async getCentrifugoClient(): Promise<typeof Centrifuge> {\n return import('centrifuge').then((module) => module.Centrifuge);\n }\n\n private async createConnection(\n url?: string,\n channel?: string\n ): Promise<void> {\n if (this.isConnectionOpen || this.isConnecting) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const CentrifugeClient = await this.getCentrifugoClient();\n\n const websocketUrl = url ?? this.url;\n const websocketChannel = channel ?? this.channel;\n\n this.connection = new CentrifugeClient(websocketUrl, {\n debug: true,\n maxReconnectDelay: 1500,\n maxServerPingDelay: 1000,\n });\n\n return new Promise<void>((resolve, reject) => {\n this.connection\n .on('connecting', () => {\n this.isConnecting = true;\n })\n .on('connected', () => {\n this.onConnect();\n resolve();\n })\n .on('disconnected', (ctx) => {\n this.onDisconnect(ctx, websocketChannel);\n reject();\n })\n .on('error', (ctx) => {\n const message = `code ${ctx.error.code} - ${ctx.error.message}`;\n\n this.elkLoggerService.log(\n `connection error: ${message}`,\n [ErrorTags.WS],\n {\n channel: websocketChannel,\n }\n );\n })\n .connect();\n\n this.subscription = this.connection.newSubscription(\n websocketChannel,\n this.getSubscriptionOptions(websocketChannel)\n );\n\n this.subscription\n .on('subscribed', (ctx) => {\n this.subscriptionPosition = ctx.streamPosition;\n this.prevSubscribedChannel = websocketChannel;\n })\n .on('publication', (ctx) => {\n const message = ctx.data as string;\n\n this.elkLoggerService.log(\n `websocket message received: ${message}`,\n [ErrorTags.WS],\n {\n channel: websocketChannel,\n }\n );\n\n this.incomingMessages$.next(ctx);\n })\n .on('error', (ctx) => {\n const message = `code ${ctx.error.code} - ${ctx.error.message}`;\n\n this.elkLoggerService.log(\n `subscription error: ${message}`,\n [ErrorTags.WS],\n {\n channel: websocketChannel,\n }\n );\n })\n .subscribe();\n });\n }\n\n private onConnect(): void {\n clearTimeout(this.openConnectionTimerId);\n this.isConnecting = false;\n this.isConnectionOpen = true;\n }\n\n private onDisconnect(\n ctx: DisconnectedContext,\n websocketChannel: string\n ): void {\n this.isConnecting = false;\n this.isConnectionOpen = false;\n\n /* If connection error, cause any connection error isn't 0 */\n if (ctx.code !== 0) {\n const message = `code ${ctx.code} - ${ctx.reason}`;\n\n this.elkLoggerService.log(\n `disconnected error: ${message}`,\n [ErrorTags.WS],\n {\n channel: websocketChannel,\n }\n );\n\n (async () => {\n await this.waitWhileNotReconnect();\n })();\n }\n }\n\n private async reconnect(): Promise<boolean> {\n this.clearReconnectionTimer();\n\n return new Promise((resolve) => {\n this.reconnectionTimerId = setTimeout(() => {\n this.createConnection()\n .then(() => resolve(true))\n .catch(() => resolve(false));\n this.incrementReconnectionTimeout();\n }, this.reconnectionTimeoutMs);\n });\n }\n\n private async waitWhileNotReconnect(): Promise<void> {\n this.clearReconnectionTimer();\n this.setFirstReconnectionTimeout();\n\n let isConnected = false;\n\n const beforeTimer = performance.now();\n\n while (!isConnected) {\n isConnected = await this.reconnect();\n }\n\n const afterTimer = performance.now();\n\n const timerDuration = afterTimer - beforeTimer;\n\n this.elkLoggerService.log(\n `fallback to reconnection timer: duration ${timerDuration}ms`,\n [ErrorTags.WS],\n {\n channel: this.channel,\n }\n );\n\n this.successfulReconnectionEventsProxy$.next();\n }\n\n private getSubscriptionOptions(\n websocketChannel: string\n ): Partial<SubscriptionOptions> {\n const options: Partial<SubscriptionOptions> = {\n recoverable: true,\n };\n\n if (\n websocketChannel === this.prevSubscribedChannel &&\n this.subscriptionPosition\n ) {\n options.since = this.subscriptionPosition;\n }\n\n return options;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NchanWebSocketService } from './nchan-web-socket.service';\nimport { CentrifugoWebSocketService } from './centrifugo-web-socket.service';\nimport { WebSocketClient } from './web-socket.interface';\nimport { WebSocketClientType } from './web-socket-client-type.enum';\n\n// @todo: remove this factory and switch to centrifugo client after centrifugo issues resolved\n@Injectable({\n providedIn: 'root',\n})\nexport class WebSocketFactory {\n public constructor(\n private readonly nchanWebSocket: NchanWebSocketService,\n private readonly centrifugoWebSocket: CentrifugoWebSocketService\n ) {}\n\n public createWebSocketClient(\n url: string,\n clientType: WebSocketClientType\n ): WebSocketClient {\n if (clientType === WebSocketClientType.centrifugo) {\n return this.centrifugoWebSocket;\n }\n\n this.nchanWebSocket.url = url;\n\n return this.nchanWebSocket;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { WebSocketFactory } from '../../../web-socket/web-socket.factory';\nimport { WebSocketClient } from '../../../web-socket/web-socket.interface';\nimport { WebSocketClientType } from '../../../web-socket/web-socket-client-type.enum';\nimport { WebSocketStatus } from './websocket-status.enum';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WebsocketStatusService {\n private webSocketSubscription: Subscription | undefined;\n private webSocketReconnectionSubscription: Subscription | undefined;\n private readonly reinsuranceCheckStatus: {\n timeoutId: ReturnType<typeof setTimeout> | null;\n readonly timeoutMs: number;\n } = {\n timeoutId: null,\n timeoutMs: 180000,\n };\n\n private readonly needCheckStatusSubject = new Subject<void>();\n private readonly statusChangedSubject = new Subject<void>();\n\n private webSocketClient: WebSocketClient | null = null;\n\n public get needCheckStatus$(): Observable<void> {\n return this.needCheckStatusSubject.asObservable();\n }\n public get statusChanged$(): Observable<void> {\n return this.statusChangedSubject.asObservable();\n }\n\n public constructor(private readonly webSocketFactory: WebSocketFactory) {}\n\n public async checkStatusWithWebSocket(\n webSocketUrl: string,\n webSocketChannelName: string,\n webSocketClientType: WebSocketClientType\n ): Promise<void> {\n this.webSocketClient = this.webSocketFactory.createWebSocketClient(\n webSocketUrl,\n webSocketClientType\n );\n\n await this.webSocketClient.open(webSocketUrl, webSocketChannelName);\n\n this.webSocketSubscription?.unsubscribe();\n this.webSocketSubscription = this.webSocketClient.messages$.subscribe(\n (message) => this.statusProcessing(message)\n );\n\n this.webSocketReconnectionSubscription =\n this.webSocketClient.subscribeOnSuccessfulReconnection(() => {\n this.needCheckStatusSubject.next();\n });\n this.needCheckStatusSubject.next();\n this.startReinsuranceCheckTimeout();\n }\n\n public closeWebSocket(): void {\n this.removeSubscription();\n this.webSocketClient?.close();\n this.clearReinsuranceCheckTimeout();\n }\n\n public startReinsuranceCheckTimeout(): void {\n this.clearReinsuranceCheckTimeout();\n this.reinsuranceCheckStatus.timeoutId = setTimeout(() => {\n this.needCheckStatusSubject.next();\n }, this.reinsuranceCheckStatus.timeoutMs);\n }\n\n private clearReinsuranceCheckTimeout(): void {\n if (this.reinsuranceCheckStatus.timeoutId) {\n clearTimeout(this.reinsuranceCheckStatus.timeoutId);\n this.reinsuranceCheckStatus.timeoutId = null;\n }\n }\n\n private statusProcessing(message: string): void {\n if (message === WebSocketStatus.statusChanged) {\n this.statusChangedSubject.next();\n this.closeWebSocket();\n this.clearReinsuranceCheckTimeout();\n }\n if (message === WebSocketStatus.troubledStatus) {\n this.clearReinsuranceCheckTimeout();\n this.closeWebSocket();\n }\n }\n\n private removeSubscription(): void {\n this.webSocketSubscription?.unsubscribe();\n this.webSocketReconnectionSubscription?.unsubscribe();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { filter, Observable, Subject, takeUntil } from 'rxjs';\nimport { StatusRequestService } from '../status-request/status-request.service';\nimport { CheckStatusService } from '../check-status/check-status.service';\nimport { WebsocketStatusService } from '../websocket-status/websocket-status.service';\nimport { StatusSettings } from '../status-settings.interface';\nimport { StatusEnum } from '../status.enum';\nimport { StatusUpdated } from '../status-updated.interface';\nimport { StatusResponse } from '../status-request/response/status-response.class';\nimport { CheckStatusResponse } from '../check-status/response/check-status-response.class';\nimport { UserBehaviourAnalyticsService } from '../../../user-behaviour-analytics/user-behaviour-analytics.service';\nimport { UserBehaviourEventName } from '../../../user-behaviour-analytics/user-behaviour-event-name.enum';\nimport { userBehaviourEventTypes } from '../../../user-behaviour-analytics/user-behaviour-event/user-behaviour-event-types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ListenStatusService {\n public isListening = false;\n\n private readonly websocketOpenedSubject = new Subject<StatusSettings>();\n private readonly statusUpdatedSubject = new Subject<StatusUpdated>();\n private readonly statusDoneSubject = new Subject<StatusSettings>();\n private destroy$ = new Subject<void>();\n\n public get websocketOpened$(): Observable<StatusSettings> {\n return this.websocketOpenedSubject.asObservable();\n }\n\n public get statusUpdated$(): Observable<StatusUpdated> {\n return this.statusUpdatedSubject.asObservable();\n }\n\n public constructor(\n private readonly statusService: StatusRequestService,\n private readonly checkStatusService: CheckStatusService,\n private readonly websocketStatusService: WebsocketStatusService,\n private readonly userBehaviourAnalyticsService: UserBehaviourAnalyticsService\n ) {}\n\n public listen(invoice: number): Observable<StatusSettings> {\n if (this.isListening) {\n this.stopListening();\n }\n\n this.destroy$ = new Subject<void>();\n this.isListening = true;\n\n this.subscribeStatusUpdate(invoice);\n this.subscribeCheckStatusUpdate();\n this.subscribeWebsocketEvent();\n\n this.checkStatusService.setRequestParams(invoice);\n\n return this.statusDoneSubject.asObservable();\n }\n\n public stopListening(): void {\n this.isListening = false;\n this.websocketStatusService.closeWebSocket();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private subscribeStatusUpdate(invoice: number): void {\n this.statusService.response$\n .pipe(\n filter((statusResponse) => {\n return statusResponse?.status?.invoice === Number(invoice);\n }),\n takeUntil(this.destroy$)\n )\n .subscribe((statusResponse: StatusResponse | null) => {\n if (!statusResponse?.status) {\n return;\n }\n\n const statusSettings = {\n statusState: statusResponse.status.statusState,\n isCancelUser: statusResponse.status.isCancelUser,\n needWebSocket: statusResponse.status.needToCheck,\n backUrlSettings: statusResponse.status.backUrlSettings,\n autoRedirect: statusResponse.status.autoRedirect,\n webSocketUrl: statusResponse.status.webSocketUrl,\n webSocketChannelName: statusResponse.status.webSocketChannelName,\n webSocketClientType: statusResponse.status.webSocketClientType,\n };\n\n this.statusUpdatedSubject.next({\n statusResponse: statusResponse,\n statusSettings: statusSettings,\n });\n\n const isStatusError =\n statusSettings.statusState === StatusEnum.canceled ||\n statusSettings.statusState === StatusEnum.error ||\n statusSettings.isCancelUser;\n\n if (isStatusError) {\n this.userBehaviourAnalyticsService.send(\n UserBehaviourEventName.openStatusError,\n userBehaviourEventTypes.manual,\n {\n instanceId: statusResponse.status.pid,\n }\n );\n }\n\n if (statusSettings.needWebSocket) {\n this.openWebsocket(statusSettings);\n return;\n }\n\n this.stopListening();\n this.statusDoneSubject.next(statusSettings);\n });\n }\n\n private subscribeCheckStatusUpdate(): void {\n this.checkStatusService.response$\n .pipe(takeUntil(this.destroy$))\n .subscribe((checkStatusResponse: CheckStatusResponse | null) => {\n if (!checkStatusResponse?.status) return;\n\n if (checkStatusResponse.status === StatusEnum.done) {\n this.statusService.request();\n this.websocketStatusService.closeWebSocket();\n return;\n }\n\n if (checkStatusResponse.final === false) {\n this.websocketStatusService.startReinsuranceCheckTimeout();\n return;\n }\n });\n }\n\n private subscribeWebsocketEvent(): void {\n this.websocketStatusService.needCheckStatus$\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.checkStatusService.request());\n\n this.websocketStatusService.statusChanged$\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.statusService.request());\n }\n\n private openWebsocket(statusSettings: StatusSettings): void {\n void this.websocketStatusService.checkStatusWithWebSocket(\n statusSettings.webSocketUrl,\n statusSettings.webSocketChannelName,\n statusSettings.webSocketClientType\n );\n this.websocketOpenedSubject.next(statusSettings);\n }\n}\n","export enum TitleClass {\n done = 'done',\n cancel = 'cancel',\n cancelUser = 'canceluser',\n}\n","export enum SavePaymentMethodStatus {\n success = 'success',\n failed = 'failed',\n}\n","import { AppError } from '../exceptions-handling/errors/app-error.class';\n\nexport class XpsResponseError extends AppError {\n public constructor(message?: string) {\n super('XPS response failed' + (message ? `: \"${message}\".` : '.'));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { lastValueFrom, Observable, Subject } from 'rxjs';\nimport { HttpHeaders } from '@angular/common/http';\nimport { tap } from 'rxjs/operators';\nimport { SavedPaymentAccountChanges } from './saved-payment-account-changes.interface';\nimport { SettingsService } from '../../../../settings/settings.service';\nimport { SecureApiClient } from '../../../../http/secure-api/secure-api.service';\nimport { XpsResponseError } from '../../../xps-response.error';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SavedPaymentAccountChangesService {\n private readonly apiRoute = 'savedmethods/newaccountinfo';\n private readonly response = new Subject<SavedPaymentAccountChanges | null>();\n\n public constructor(\n private readonly settingsService: SettingsService,\n private readonly secureApi: SecureApiClient\n ) {}\n\n public get response$(): Observable<SavedPaymentAccountChanges | null> {\n return this.response.asObservable();\n }\n\n public async request(invoice: number): Promise<SavedPaymentAccountChanges> {\n const requestParameters = {\n access_token: this.settingsService.token,\n invoice_id: invoice,\n };\n\n return lastValueFrom(\n this.secureApi\n .post<SavedPaymentAccountChanges>(\n this.apiRoute,\n new URLSearchParams(\n requestParameters as unknown as { [key: string]: string }\n ),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n .pipe(\n tap((value: SavedPaymentAccountChanges) => {\n this.response.next(value);\n })\n )\n ).catch((error: Error) => {\n throw new XpsResponseError(error.message);\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { StatusRequestParams } from '../status-request/status-request-params.interface';\nimport { Status } from '../status.interface';\nimport { firstValueFrom, Subscription } from 'rxjs';\nimport { StatusRequestService } from '../status-request/status-request.service';\nimport { StatusUpdatedActionCreator } from '../../actions/status-updated/status-updated.action.class';\nimport { ListenStatusService } from '../listen-status/listen-status.service';\nimport { SavedPaymentAccountChanges } from './api/saved-payment-account-changes.interface';\nimport { SavedPaymentAccountChangesService } from './api/saved-payment-account-changes.service';\nimport { TitleClass } from '../title-class.enum';\nimport { NextActionService } from '../../actions/next-action.service';\nimport { StatusEnum } from '../status.enum';\nimport { SavePaymentMethodStatus } from './save-payment-method-status.enum';\nimport { CheckStatusService } from '../check-status/check-status.service';\nimport { CheckStatusResponse } from '../check-status/response/check-status-response.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SavePaymentMethodStatusService {\n private savePaymentMethodStatus?: SavePaymentMethodStatus;\n private listenStatusSubscription!: Subscription;\n private statusChecked = false;\n private accountData?: SavedPaymentAccountChanges;\n private status?: Status | null;\n\n public constructor(\n private readonly statusRequestService: StatusRequestService,\n private readonly listenStatusService: ListenStatusService,\n private readonly savedPaymentAccountChangesService: SavedPaymentAccountChangesService,\n private readonly nextActionService: NextActionService,\n private readonly checkStatusService: CheckStatusService,\n private readonly statusUpdatedActionCreator: StatusUpdatedActionCreator\n ) {}\n\n public async getStatus(params: StatusRequestParams): Promise<Status> {\n if (!this.accountData || !this.status) {\n this.statusRequestService.setRequestParams(params);\n this.statusRequestService.request();\n\n const statusResponse = await firstValueFrom(\n this.statusRequestService.response$\n );\n\n this.status = statusResponse.status;\n this.status.isSavePaymentAccount = true;\n\n this.accountData = await this.getPaymentAccountData(params.invoice);\n }\n\n if (\n this.savingFailedOrCancel(this.status) ||\n (this.accountData && this.savingSuccessful(this.accountData, this.status))\n ) {\n return this.status;\n }\n\n if (!this.statusChecked) {\n this.checkStatus(params);\n this.status.statusState = StatusEnum.processing;\n return this.status;\n }\n\n this.statusChecked = false;\n this.status.statusState = StatusEnum.error;\n const outStatus = { ...this.status };\n this.status = null;\n return outStatus;\n }\n\n private checkStatus(params: StatusRequestParams): void {\n if (!this.statusChecked) {\n this.statusChecked = true;\n }\n this.startWaitingStatusUpdates(params.invoice);\n this.statusRequestService.request();\n }\n\n private savingFailedOrCancel(status?: Status | null): boolean {\n return (\n status?.titleClass === TitleClass.cancel ||\n status?.titleClass === TitleClass.cancelUser\n );\n }\n\n private savingSuccessful(\n accountData: SavedPaymentAccountChanges,\n status?: Status | null,\n checkStatus?: CheckStatusResponse\n ): boolean {\n return !!(\n status?.titleClass === TitleClass.done &&\n (accountData?.new_account || checkStatus?.isPaymentAccountAttached)\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n private getPaymentAccountData(\n invoice: number\n ): Promise<SavedPaymentAccountChanges> {\n return this.savedPaymentAccountChangesService.request(invoice);\n }\n\n private startWaitingStatusUpdates(invoice: number): void {\n if (this.listenStatusSubscription) {\n this.listenStatusSubscription.unsubscribe();\n this.listenStatusService.stopListening();\n }\n\n this.listenStatusService.listen(invoice);\n\n this.listenStatusSubscription =\n this.listenStatusService.statusUpdated$.subscribe(\n ({ statusResponse }) => {\n if (!statusResponse?.status) {\n return;\n }\n this.status = statusResponse.status;\n\n void firstValueFrom(this.checkStatusService.response$).then(\n (checkStatusResponse) => {\n if (checkStatusResponse?.final && statusResponse.status) {\n this.loadNewPaymentAccountData(\n statusResponse.status,\n checkStatusResponse\n );\n }\n }\n );\n }\n );\n }\n\n private loadNewPaymentAccountData(\n status: Status,\n checkStatus: CheckStatusResponse\n ): void {\n if (!status.invoice) {\n return;\n }\n void this.getPaymentAccountData(status.invoice).then(\n (accountChanges: SavedPaymentAccountChanges) => {\n if (accountChanges) {\n this.accountData = accountChanges;\n this.handleSavingStatus(status, accountChanges, checkStatus);\n }\n }\n );\n }\n\n private handleSavingStatus(\n status: Status,\n account: SavedPaymentAccountChanges,\n checkStatus: CheckStatusResponse\n ): void {\n if (this.savingSuccessful(account, status, checkStatus)) {\n this.savePaymentMethodStatus = SavePaymentMethodStatus.success;\n } else {\n this.savePaymentMethodStatus = SavePaymentMethodStatus.failed;\n }\n\n this.listenStatusService.stopListening();\n this.listenStatusSubscription.unsubscribe();\n\n const isSavePaymentMethod = true;\n\n this.nextActionService.emitFlowUpdates(\n this.statusUpdatedActionCreator.getActionData({\n statusResponse: status,\n isSavePaymentMethodMode: isSavePaymentMethod,\n savePaymentMethodStatus: this.savePaymentMethodStatus,\n })\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { firstValueFrom, Observable, skip } from 'rxjs';\nimport { StatusRequestService } from './status-request/status-request.service';\nimport { StatusRequestParams } from './status-request/status-request-params.interface';\nimport { ListenStatusService } from './listen-status/listen-status.service';\nimport { Status } from './status.interface';\nimport { NextActionService } from '../actions/next-action.service';\nimport { StatusUpdatedActionCreator } from '../actions/status-updated/status-updated.action.class';\nimport { UrlService } from '../../url/url.service';\nimport { requiredStatusSearchParams } from './status-request/required-status-search-params.const';\nimport { statusSearchParamsMap } from './status-request/status-search-params.map';\nimport { FinanceDetailsService } from '../finance-details/finance-details.service';\nimport { SavePaymentMethodStatusService } from './save-payment-method-status/save-payment-method-status.service';\nimport { XpsBoolean } from '../../xps-boolean.enum';\nimport { StatusSettings } from './status-settings.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StatusService {\n public constructor(\n private readonly urlService: UrlService,\n private readonly statusRequestService: StatusRequestService,\n private readonly financeDetailsService: FinanceDetailsService,\n private readonly listenStatusService: ListenStatusService,\n private readonly nextActionService: NextActionService,\n private readonly savePaymentMethodStatusService: SavePaymentMethodStatusService,\n private readonly statusUpdatedActionCreator: StatusUpdatedActionCreator\n ) {}\n\n public async getStatus(params: StatusRequestParams): Promise<Status> {\n const isSavePaymentMethodMode =\n params?.isSavePaymentAccount === XpsBoolean.true;\n if (isSavePaymentMethodMode) {\n return this.savePaymentMethodStatusService.getStatus(params);\n }\n\n this.statusRequestService.setRequestParams(params);\n\n this.startWaitingStatusUpdates(params.invoice);\n\n this.statusRequestService.request();\n\n const statusResponse = await firstValueFrom(\n this.statusRequestService.response$\n );\n\n this.financeDetailsService.emitWithStatus(statusResponse.status);\n\n return statusResponse.status;\n }\n\n public async getStatusWithUrlSearchParams(url?: string): Promise<Status> {\n const searchParams = this.getRequestParamsFromUrl(url);\n\n if (!searchParams) {\n throw new Error('No required search params to get status');\n }\n\n return this.getStatus(searchParams);\n }\n\n public listenFinalStatus(invoice: number): Observable<StatusSettings> {\n return this.listenStatusService.listen(invoice);\n }\n\n private getRequestParamsFromUrl(url?: string): StatusRequestParams | null {\n const searchParams = this.urlService.getSearchParams(url ?? '');\n const keys = new Set(Object.keys(searchParams));\n\n if (\n requiredStatusSearchParams.some((requiredKey) => !keys.has(requiredKey))\n ) {\n return null;\n }\n\n const params: { [key: string]: string | number } = {};\n statusSearchParamsMap.forEach((settings, key) => {\n params[settings.key] = settings.converter(searchParams[key]);\n });\n\n return params as unknown as StatusRequestParams;\n }\n\n private startWaitingStatusUpdates(invoice: number): void {\n this.listenStatusService.listen(invoice);\n\n this.listenStatusService.statusUpdated$\n .pipe(skip(1))\n .subscribe(({ statusResponse }) => {\n this.financeDetailsService.emitWithStatus(statusResponse.status);\n\n this.nextActionService.emitFlowUpdates(\n this.statusUpdatedActionCreator.getActionData({ statusResponse })\n );\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { EmitDataService } from '../emit-data.service.abstract';\nimport { CreditCardState } from './credit-card-state.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CreditCardStateService extends EmitDataService<CreditCardState> {}\n","export enum ThreeDsStatusWebSocketTypes {\n status3DS_changed = 'status3DS_changed',\n}\n","export enum ThreeDsStatusTypes {\n completed = 'completed',\n challenge = 'challenge',\n collectDfp = 'collect_dfp',\n}\n","export class StatusThreeDsRequest {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public readonly access_token: string;\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public readonly threeDSTrXid: string;\n\n public constructor(token: string, threeDsId: string) {\n this.access_token = token;\n this.threeDSTrXid = threeDsId;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { StatusThreeDsRequest } from './status-three-ds-request.class';\n\nexport type StatusThreeDsRequestParameters = ConstructorParameters<\n typeof StatusThreeDsRequest\n>;\n\nexport type StatusThreeDsRequestFactory = (\n ...args: StatusThreeDsRequestParameters\n) => StatusThreeDsRequest;\n\nexport const statusThreeDsRequestFactoryToken: InjectionToken<StatusThreeDsRequestFactory> =\n new InjectionToken<StatusThreeDsRequestFactory>('StatusThreeDsRequest');\n\nexport const statusThreeDsRequestFactoryProvider: ValueProvider = {\n provide: statusThreeDsRequestFactoryToken,\n useValue: (...args: StatusThreeDsRequestParameters) =>\n new StatusThreeDsRequest(...args),\n};\n","import { ThreeDsCheckoutForm } from '../three-ds-checkout-form.interface';\nimport { Properties } from '../../../../../properties.type';\n\nexport class StatusThreeDsResponse {\n public readonly status: string;\n public readonly checkoutForm?: ThreeDsCheckoutForm;\n\n public constructor(params: Properties<StatusThreeDsResponse>) {\n this.status = params.status;\n this.checkoutForm = params.checkoutForm;\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { StatusThreeDsResponse } from './status-three-ds-response.class';\n\nexport type StatusThreeDsResponseParameters = ConstructorParameters<\n typeof StatusThreeDsResponse\n>;\n\nexport type StatusThreeDsResponseFactory = (\n ...args: StatusThreeDsResponseParameters\n) => StatusThreeDsResponse;\n\nexport const statusThreeDsResponseFactoryToken: InjectionToken<StatusThreeDsResponseFactory> =\n new InjectionToken<StatusThreeDsResponseFactory>('StatusThreeDsResponse');\n\nexport const statusThreeDsResponseFactoryProvider: ValueProvider = {\n provide: statusThreeDsResponseFactoryToken,\n useValue: (...args: StatusThreeDsResponseParameters) =>\n new StatusThreeDsResponse(...args),\n};\n","import { lastValueFrom, Observable, Subject } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Inject, Injectable } from '@angular/core';\nimport { HttpHeaders } from '@angular/common/http';\nimport { SecureApiClient } from '../../../../http/secure-api/secure-api.service';\nimport { SettingsService } from '../../../../settings/settings.service';\nimport { TokenError } from '../../../../exceptions-handling/errors/token-error.class';\nimport { XpsResponseError } from '../../../xps-response.error';\nimport { ThreeDsForm } from '../../three-ds-form.interface';\nimport { StatusThreeDsResponseApi } from './status-three-ds-response.interface';\nimport {\n StatusThreeDsRequestFactory,\n statusThreeDsRequestFactoryToken,\n} from './request/status-three-ds-request.token';\nimport {\n StatusThreeDsResponseFactory,\n statusThreeDsResponseFactoryToken,\n} from './response/status-three-ds-response.token';\nimport { StatusThreeDsResponse } from './response/status-three-ds-response.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class StatusThreeDsService {\n public get response$(): Observable<StatusThreeDsResponse | null> {\n return this.response.asObservable();\n }\n\n private readonly apiRoute = 'secure3d/check';\n private readonly response = new Subject<StatusThreeDsResponse | null>();\n\n public constructor(\n private readonly secureApi: SecureApiClient,\n private readonly settingsService: SettingsService,\n @Inject(statusThreeDsRequestFactoryToken)\n private readonly requestFactory: StatusThreeDsRequestFactory,\n @Inject(statusThreeDsResponseFactoryToken)\n private readonly responseFactory: StatusThreeDsResponseFactory\n ) {}\n\n public request(data: ThreeDsForm): void {\n const token = this.settingsService.token;\n\n if (!token) {\n throw new TokenError();\n }\n const requestParams = this.requestFactory(token, data.threeDSTrXid);\n\n void lastValueFrom(\n this.secureApi\n .post<StatusThreeDsResponseApi>(\n this.apiRoute,\n new URLSearchParams({ ...requestParams }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n .pipe(\n map((response) => {\n const statusResponse = this.responseFactory({\n status: response.secure3d.status,\n checkoutForm: response.secure3d.checkout_form,\n });\n\n this.response.next(statusResponse);\n })\n )\n ).catch((error: Error) => {\n throw new XpsResponseError(error.message);\n });\n }\n}\n","export class NotifyDfpStatusRequest {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public readonly access_token: string;\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public readonly threeDSTrXid: string;\n\n public readonly secure3dCompind: 'Y' | 'N';\n\n public constructor(params: {\n token: string;\n threeDsTrXid: string;\n isCompind: boolean;\n }) {\n this.access_token = params.token;\n this.threeDSTrXid = params.threeDsTrXid;\n this.secure3dCompind = params.isCompind ? 'Y' : 'N';\n }\n}\n","import { InjectionToken, ValueProvider } from '@angular/core';\nimport { NotifyDfpStatusRequest } from './notify-dfp-status-request.class';\n\nexport type NotifyDfpStatusRequestParameters = ConstructorParameters<\n typeof NotifyDfpStatusRequest\n>;\n\nexport type NotifyDfpStatusRequestFactory = (\n ...args: NotifyDfpStatusRequestParameters\n) => NotifyDfpStatusRequest;\n\nexport const notifyDfpStatusRequestFactoryToken: InjectionToken<NotifyDfpStatusRequestFactory> =\n new InjectionToken<NotifyDfpStatusRequestFactory>('NotifyDfpStatusRequest');\n\nexport const notifyDfpStatusRequestFactoryProvider: ValueProvider = {\n provide: notifyDfpStatusRequestFactoryToken,\n useValue: (...args: NotifyDfpStatusRequestParameters) =>\n new NotifyDfpStatusRequest(...args),\n};\n","import { lastValueFrom } from 'rxjs';\nimport { Inject, Injectable } from '@angular/core';\nimport { HttpHeaders } from '@angular/common/http';\nimport { SecureApiClient } from '../../../../http/secure-api/secure-api.service';\nimport { SettingsService } from '../../../../settings/settings.service';\nimport {\n NotifyDfpStatusRequestFactory,\n notifyDfpStatusRequestFactoryToken,\n} from './request/notify-dfp-status-request.token';\nimport { TokenError } from '../../../../exceptions-handling/errors/token-error.class';\nimport { XpsResponseError } from '../../../xps-response.error';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NotifyDfpStatusService {\n private readonly apiRouteComplete = 'secure3d/notify';\n\n public constructor(\n private readonly secureApi: SecureApiClient,\n private readonly settingsService: SettingsService,\n @Inject(notifyDfpStatusRequestFactoryToken)\n private readonly requestFactory: NotifyDfpStatusRequestFactory\n ) {}\n\n /*\n * isCompind is a flag of dfp expired state\n */\n public request(threeDsId: string, isCompind: boolean): void {\n const token = this.settingsService.token;\n\n if (!token) {\n throw new TokenError();\n }\n\n const requestParams = this.requestFactory({\n token: token,\n threeDsTrXid: threeDsId,\n isCompind,\n });\n\n lastValueFrom(\n this.secureApi.post(\n this.apiRouteComplete,\n new URLSearchParams({ ...requestParams }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n ).catch((error: Error) => {\n throw new XpsResponseError(error.message);\n });\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { windowToken } from '../../../window.token';\nimport { ExtendedWindow } from '../../../extended-window.interface';\nimport { NotifyDfpStatusService } from '../api/notify-dfp-status/notify-dfp-status.service';\nimport { ThreeDsForm } from '../three-ds-form.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DfpCollectService {\n private readonly iframeName = 'iframeDFP';\n private readonly formName = 'formDFP';\n\n public constructor(\n @Inject(windowToken)\n private readonly window: ExtendedWindow,\n private readonly notifyDfpStatusService: NotifyDfpStatusService\n ) {}\n\n public collectDfpStatus(threeDsForm: ThreeDsForm): void {\n if (threeDsForm.waitCallback) {\n this.openIframeWithPostRequest(threeDsForm, false);\n } else {\n this.openIframeWithPostRequest(threeDsForm, true);\n }\n }\n\n /*\n * This method create invisible iframe with required params and after that it submit form in iframe\n * */\n private openIframeWithPostRequest(\n threeDsForm: ThreeDsForm,\n isNeedNotifyAfterLoad: boolean\n ): void {\n const iFrameElement = this.window.document.getElementById(this.iframeName);\n if (!iFrameElement) {\n this.createIframe(isNeedNotifyAfterLoad, threeDsForm.threeDSTrXid);\n this.postFormToIframe(\n threeDsForm.threeDSMethod,\n threeDsForm.threeDSMethodData\n );\n }\n }\n\n /*\n * isNeedNotifyAfterLoad is need to send notification of dft to server\n * */\n private createIframe(\n isNeedNotifyAfterLoad: boolean,\n threeDsTrXid: string\n ): void {\n const attributes: { [key: string]: string } = {\n name: this.iframeName,\n id: this.iframeName,\n src: 'javascript:false',\n style: 'display:none',\n };\n\n const iFrame = this.window.document.createElement('iframe');\n this.setAttributes(iFrame, attributes);\n this.window.document.body.appendChild(iFrame);\n\n if (isNeedNotifyAfterLoad) {\n (\n this.window.document.getElementById(\n this.iframeName\n ) as HTMLIFrameElement\n ).onload = () => {\n this.notifyDfpStatusService.request(threeDsTrXid, true);\n };\n }\n }\n\n /*\n * This method will submit form in our iframe. Form will be created, if it's don't exist\n * */\n private postFormToIframe(url: string, threeDsMethod: string): void {\n let form = this.window.document.getElementById(\n this.formName\n ) as HTMLFormElement;\n\n if (!form) {\n form = this.createForm();\n this.window.document.body.appendChild(form);\n }\n\n form.setAttribute('action', url);\n form.setAttribute('target', this.iframeName);\n form.appendChild(this.createInput('threeDSMethodData', threeDsMethod));\n\n form.submit();\n }\n\n /*\n * This method will create invisible form with required params\n */\n private createForm(): HTMLFormElement {\n const form = this.window.document.createElement('form');\n const initAttributes: { [key: string]: string } = {\n name: this.formName,\n id: this.formName,\n style: 'display:none',\n method: 'POST',\n enctype: 'application/x-www-form-urlencoded',\n };\n\n this.setAttributes(form, initAttributes);\n\n return form;\n }\n\n private createInput(name: string, value: string): HTMLInputElement {\n const input = this.window.document.createElement('input');\n input.type = 'hidden';\n input.name = name;\n input.value = value;\n return input;\n }\n\n /*\n * This method will set attributes to form/iframe\n * */\n private setAttributes(\n element: HTMLElement,\n attributes: { [key: string]: string }\n ): void {\n Object.keys(attributes).forEach((name) => {\n element.setAttribute(name, attributes[name]);\n });\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { Timer, Timers } from './timer.interface';\nimport { windowToken } from '../../../window.token';\nimport { ExtendedWindow } from '../../../extended-window.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ReinsuranceCheckService {\n private timers: Timers = {};\n\n public constructor(\n @Inject(windowToken)\n private readonly window: ExtendedWindow\n ) {}\n\n public addTimer(timer: Timer): void {\n if (!timer) {\n return;\n }\n\n this.removeTimer(timer.id);\n\n this.timers[timer.id] = timer;\n\n const timerInStorage = this.timers[timer.id] as unknown as Timer;\n\n this.window.setTimeout(() => {\n timerInStorage.callback();\n\n this.timers[timer.id] = null;\n }, timerInStorage.timeoutMs);\n }\n\n public removeTimer(id: string): void {\n const timerInStorage = this.timers[id];\n\n if (!timerInStorage) {\n return;\n }\n\n this.window.clearTimeout(timerInStorage.timeoutRef);\n this.timers[id] = null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { WebSocketFactory } from '../../../web-socket/web-socket.factory';\nimport { WebSocketClient } from '../../../web-socket/web-socket.interface';\nimport { StatusThreeDsService } from '../api/status-three-ds/status-three-ds.service';\nimport { NotifyDfpStatusService } from '../api/notify-dfp-status/notify-dfp-status.service';\nimport { ThreeDsStatusWebSocketTypes } from '../three-ds-status-websocket-types.enum';\nimport { ThreeDsForm } from '../three-ds-form.interface';\nimport { ThreeDsStatusTypes } from '../api/status-three-ds/status-types.enum';\nimport { DfpCollectService } from '../dfp-collect/dfp-collect.service';\nimport { ReinsuranceCheckService } from '../reinsurance-check/reinsurance-check.service';\nimport { StatusUpdate } from './status-update.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ThreeDs20Service {\n public get statusUpdates$(): Observable<StatusUpdate> {\n return this.statusUpdates.asObservable();\n }\n\n private webSocketSubscription: Subscription | undefined;\n private webSocketReconnectionSubscription: Subscription | undefined;\n private webSocketClient: WebSocketClient | null = null;\n\n private readonly statusUpdates = new Subject<StatusUpdate>();\n\n private statusRequestSubscription: Subscription | null = null;\n\n private readonly notifyDfpTimerId = 'notify-dfp';\n private readonly notifyDfpTimeoutMs = 10000;\n\n private readonly statusThreeDsTimerId = 'status-three-ds';\n private readonly statusThreeDsTimeoutMs = 180000;\n\n public constructor(\n private readonly statusThreeDsService: StatusThreeDsService,\n private readonly notifyDfpStatusService: NotifyDfpStatusService,\n private readonly webSocketFactory: WebSocketFactory,\n private readonly dfpCollectService: DfpCollectService,\n private readonly reinsuranceCheckService: ReinsuranceCheckService\n ) {}\n\n public async checkThreeDs20(threeDsForm: ThreeDsForm | null): Promise<void> {\n if (!threeDsForm) {\n return;\n }\n\n this.reinsuranceCheckService.addTimer({\n id: this.notifyDfpTimerId,\n timeoutMs: this.notifyDfpTimeoutMs,\n callback: () => {\n this.notifyDfpStatusService.request(threeDsForm.threeDSTrXid, false);\n },\n });\n\n this.webSocketClient = this.webSocketFactory.createWebSocketClient(\n threeDsForm.webSocketChannelUrl,\n threeDsForm.webSocketClientType\n );\n\n await this.webSocketClient.open(\n threeDsForm.webSocketChannelUrl,\n threeDsForm.webSocketClientType\n );\n this.webSocketSubscription?.unsubscribe();\n\n this.webSocketSubscription = this.webSocketClient.messages$.subscribe(\n (message) => {\n if (message !== ThreeDsStatusWebSocketTypes.status3DS_changed) {\n return;\n }\n\n this.statusThreeDsService.request(threeDsForm);\n }\n );\n\n this.webSocketReconnectionSubscription?.unsubscribe();\n this.webSocketReconnectionSubscription =\n this.webSocketClient.subscribeOnSuccessfulReconnection(() => {\n this.statusThreeDsService.request(threeDsForm);\n });\n\n this.handleThreeDsUpdates(threeDsForm);\n this.statusThreeDsService.request(threeDsForm);\n\n this.reinsuranceCheckService.addTimer({\n id: this.statusThreeDsTimerId,\n timeoutMs: this.statusThreeDsTimeoutMs,\n callback: () => {\n this.statusThreeDsService.request(threeDsForm);\n },\n });\n }\n\n private handleThreeDsUpdates(threeDsForm: ThreeDsForm): void {\n this.statusRequestSubscription?.unsubscribe();\n this.statusRequestSubscription =\n this.statusThreeDsService.response$.subscribe((threeDsStatus) => {\n if (!threeDsStatus) {\n return;\n }\n\n if (threeDsStatus.status === ThreeDsStatusTypes.completed) {\n this.stopReinsuranceMethods();\n this.statusUpdates.next({\n type: 'complete',\n data: {\n statusUrl: threeDsForm.statusUrl,\n },\n });\n return;\n }\n\n if (\n threeDsStatus.status === ThreeDsStatusTypes.challenge &&\n threeDsStatus.checkoutForm\n ) {\n this.stopReinsuranceMethods();\n this.statusUpdates.next({\n type: 'challenge',\n data: threeDsStatus.checkoutForm,\n });\n }\n\n if (threeDsStatus.status === ThreeDsStatusTypes.collectDfp) {\n this.dfpCollectService.collectDfpStatus(threeDsForm);\n }\n });\n }\n\n private stopReinsuranceMethods(): void {\n this.reinsuranceCheckService.removeTimer(this.notifyDfpTimerId);\n this.reinsuranceCheckService.removeTimer(this.statusThreeDsTimerId);\n this.webSocketClient?.close();\n this.statusRequestSubscription?.unsubscribe();\n }\n}\n","import { Subscription } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { NextActionService } from '../actions/next-action.service';\nimport { ThreeDs20Service } from './three-ds-20/three-ds20.service';\nimport { ThreeDsActionCreator } from '../actions/three-ds/three-ds.action.class';\nimport { CheckStatusActionCreator } from '../actions/check-status/check-status.action.class';\nimport { SubmitResponse } from '../submit/response/submit-response.class';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ThreeDsService {\n private statusSubscription: Subscription | null = null;\n\n public constructor(\n private readonly threeDs20Service: ThreeDs20Service,\n private readonly nextActionService: NextActionService,\n private readonly checkStatusActionCreator: CheckStatusActionCreator,\n private readonly threeDsActionCreator: ThreeDsActionCreator\n ) {}\n\n public checkThreeDs(params: SubmitResponse): void {\n /*\n At this moment we support only 3ds 2.0 version.\n 3ds 1.0 currently working by our redirect logic (Redirect NextAction).\n If in future we will get new version of 3ds, we should add 3ds determination logic to this service\n */\n void this.threeDs20Service.checkThreeDs20(params.parameters.threeDSForm);\n\n this.statusSubscription?.unsubscribe();\n this.statusSubscription = this.threeDs20Service.statusUpdates$.subscribe(\n (statusUpdate) => {\n if (statusUpdate.type === 'complete') {\n return this.nextActionService.emitFlowUpdates(\n this.checkStatusActionCreator.getActionData()\n );\n }\n\n this.nextActionService.emitFlowUpdates(\n this.threeDsActionCreator.getActionData(statusUpdate)\n );\n }\n );\n }\n\n public stopChecking(): void {\n this.statusSubscription?.unsubscribe();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { EmitDataService } from '../emit-data.service.abstract';\nimport { XpsMessage } from '../xps-message.interface';\nimport { UnescapeHtmlPipe } from '../../../shared/pipes/unescape-html/unescape-html.pipe';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FormMessagesService extends EmitDataService<string[]> {\n public constructor(private readonly unescapeHtmlPipe: UnescapeHtmlPipe) {\n super();\n }\n\n public emitOnResponse(messages?: XpsMessage[]): void {\n const mapInfoMessages = (infoMessage: XpsMessage): string =>\n this.unescapeHtmlPipe.transform(infoMessage.message);\n\n super.emit(messages?.map(mapInfoMessages) ?? []);\n }\n}\n","import {\n BehaviorSubject,\n Observable,\n Subject,\n filter,\n takeUntil,\n take,\n} from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { FormControlStatus, UntypedFormGroup } from '@angular/forms';\nimport { SubmitResponse } from './submit/response/submit-response.class';\nimport { FormService } from './form/form.service';\nimport { InitializeResponse } from './initialize/response/initialize-response.class';\nimport { InitializeService } from './initialize/initialize.service';\nimport { Status } from './status/status.interface';\nimport { SubmitService } from './submit/submit.service';\nimport { SyncService } from './sync/sync.service';\nimport { StatusService } from './status/status.service';\nimport { NextActionService } from './actions/next-action.service';\nimport { ControlConfig } from './form/controls/control-config';\nimport { ControlConfigService } from './form/controls/control-config.service';\nimport { FinanceDetails } from './finance-details/finance-details.interface';\nimport { FinanceDetailsService } from './finance-details/finance-details.service';\nimport { NextAction } from './actions/next-action.interface';\nimport { XpsSummary } from './xps-summary.interface';\nimport { Field } from './field.interface';\nimport { PaymentConfig } from './payment-config.interface';\nimport { isSubmitResponse } from './submit/response/is-submit-response.function';\nimport { XpsBoolean } from '../xps-boolean.enum';\nimport { StatusRequestParams } from './status/status-request/status-request-params.interface';\nimport { ValidationErrors } from './form/validators/validation-errors.interface';\nimport { InputEventName } from './form/input-event.enum';\nimport { FormFieldsStatus } from './form/form-fields-status.interface';\nimport { ThreeDsService } from './three-ds/three-ds.service';\nimport { XpsCommand } from './xps-comand.enum';\nimport { CreditCardStateService } from './credit-card-state/credit-card-state.service';\nimport { FieldNames } from './field-names.enum';\nimport { FormState } from './form/form-state.interface';\nimport { FormMessagesService } from './form-messages/form-messages.service';\nimport { XpsMessage } from './xps-message.interface';\nimport { SettingsService } from '../settings/settings.service';\nimport { CountryService } from '../country/country.service';\nimport { SdkPaymentSystemsInitialData } from '../sdk-payment-systems/sdk-payment-systems-initial-data.interface';\nimport { FormResponse } from './form-response.interface';\nimport { CheckStatusActionCreator } from './actions/check-status/check-status.action.class';\nimport { ControlStatus } from './form/control-status.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PaymentService {\n public form: UntypedFormGroup | null = null;\n\n public get formFieldsStatus$(): Observable<FormFieldsStatus> {\n return this.formFieldsStatusSubject.asObservable().pipe(filter(Boolean));\n }\n\n public get paymentForm$(): Observable<FormControlStatus | null> {\n return this._paymentForm$.asObservable();\n }\n\n public get formResponse$(): Observable<FormResponse | null> {\n return this._formResponse$.asObservable();\n }\n\n public get formResponseValue(): FormResponse | null {\n return this._formResponse$.getValue();\n }\n\n private data: InitializeResponse | SubmitResponse | null = null;\n private financeDetails: FinanceDetails | null = null;\n private focusFieldName: string | null = null;\n private fields: Field[] = [];\n private config!: PaymentConfig;\n\n private destroy$ = new Subject<void>();\n private formDestroy$ = new Subject<void>();\n private readonly _paymentForm$ =\n new BehaviorSubject<FormControlStatus | null>(null);\n private readonly formFieldsStatusSubject =\n new BehaviorSubject<FormFieldsStatus | null>(null);\n private readonly _formResponse$ = new BehaviorSubject<FormResponse | null>(\n null\n );\n\n private isSavingMethodMode = false;\n\n public constructor(\n private readonly initializeService: InitializeService,\n private readonly submitService: SubmitService,\n private readonly syncService: SyncService,\n private readonly formService: FormService,\n private readonly statusService: StatusService,\n private readonly financeDetailsService: FinanceDetailsService,\n private readonly creditCardStateService: CreditCardStateService,\n private readonly nextActionService: NextActionService,\n private readonly controlConfigService: ControlConfigService,\n private readonly threeDsService: ThreeDsService,\n private readonly formMessagesService: FormMessagesService,\n private readonly settingsService: SettingsService,\n private readonly countryService: CountryService,\n private readonly checkStatusActionCreator: CheckStatusActionCreator\n ) {}\n\n public async initialize(config: PaymentConfig): Promise<Field[]> {\n this.destroy$ = new Subject<void>();\n this.formDestroy$ = new Subject<void>();\n\n this.listenFinanceDetails();\n\n this.config = config;\n this.data = await this.initializeService.request(config);\n this.emitFormResponse(this.data);\n\n this.fields = this.getFields();\n this.form = this.formService.createForm(this.fields);\n\n this.updatePidConfig();\n this.setupSyncService(this.form, this.fields);\n this.listenFormStatusChanges(this.form);\n\n this.emitFinanceDetails(this.data.paymentForm?.summary);\n this.emitFormFieldsStatus(this.form);\n\n this.emitFormMessages(this.getInitializeMessages());\n\n return this.fields.filter(\n (field: Field) => field?.isVisible === XpsBoolean.true\n );\n }\n\n public async submit(): Promise<NextAction | null | void> {\n if (!this.form) {\n throw new Error('form is empty!');\n }\n\n if (!this.form.valid) {\n this.form.markAllAsTouched();\n this.emitFormFieldsStatus(this.form);\n return;\n }\n\n this.isSavingMethodMode = this.fields.some(\n ({ name, value }) =>\n name === 'savePsAccountOnly' && value === XpsBoolean.true\n );\n const submitResponse = await this.submitService.request(\n this.fields,\n this.form\n );\n\n this.data = submitResponse;\n this.emitFormResponse(this.data);\n\n if (!this.isSavingMethodMode) {\n this.emitFinanceDetails(submitResponse.summary);\n }\n this.emitFormMessages(submitResponse.messages);\n\n // Handle 3ds flow\n if (\n submitResponse.currentCommand === XpsCommand.create &&\n submitResponse.parameters.threeDSForm\n ) {\n this.runThreeDs();\n return;\n }\n\n this.fields = this.getFields();\n this.form = this.formService.createForm(this.fields);\n\n this.syncService.setup(this.form, this.fields);\n\n return this.nextActionService.getNextAction(submitResponse);\n }\n\n public getFields(): Field[] {\n if (this.data instanceof SubmitResponse) {\n return this.data.fields ?? [];\n }\n\n return this.data?.paymentForm?.fields ?? [];\n }\n\n public getControlStatus(name: FieldNames): ControlStatus | null {\n const control = this.form?.get(name);\n if (!control) {\n return null;\n }\n\n return {\n name,\n errors: control.errors,\n status: control.status,\n };\n }\n\n public getInitialDataForSdkPaymentSystems(): SdkPaymentSystemsInitialData {\n if (!isSubmitResponse(this.data)) {\n throw new Error('Should submit form first');\n }\n\n return {\n data: this.data.parameters.checkout.data.data,\n sandbox: this.settingsService.isSandboxMode()\n ? XpsBoolean.true\n : XpsBoolean.false,\n country: this.countryService.getCountry(),\n };\n }\n\n public getQrCode(): string {\n if (!isSubmitResponse(this.data)) {\n throw new Error('Should submit form first');\n }\n\n return this.data.parameters.form.qr.title;\n }\n\n public getPid(): number | null {\n if (this.data instanceof SubmitResponse) {\n return (\n Number(\n this.data.fields.find((field) => field.name === 'fix_pid')?.value\n ) || null\n );\n }\n\n if (this.data instanceof InitializeResponse) {\n return (\n Number(\n this.data.paymentForm?.fields.find(\n (field) => field.name === 'fix_pid'\n )?.value\n ) || null\n );\n }\n\n return null;\n }\n\n public getSubmitButtonText(): string | null {\n if (this.data instanceof SubmitResponse) {\n return this.data.parameters.buyData.value;\n }\n\n if (this.data instanceof InitializeResponse) {\n return this.data.paymentForm?.buyData.value ?? null;\n }\n\n return null;\n }\n\n public async validate(field: Field): Promise<ValidationErrors | null> {\n const syncErrors = this.syncService.getSyncValidationErrors(field);\n\n if (syncErrors) {\n return Promise.resolve(syncErrors);\n }\n\n return this.syncService.validate(field);\n }\n\n public runThreeDs(): void {\n if (!isSubmitResponse(this.data)) {\n throw new Error('Should submit form first');\n }\n\n this.threeDsService.checkThreeDs(this.data);\n }\n\n public getFinanceDetails(): FinanceDetails | null {\n return this.financeDetails;\n }\n\n public updateFieldFormState(fieldName: string, formState: FormState): void {\n if (this.form) {\n this.formService.updateFieldFormState(\n this.form,\n this.fields,\n fieldName,\n formState\n );\n }\n }\n\n public getFieldFormState(fieldName: FieldNames): FormState | null {\n return this.formService.getFieldFormState(fieldName);\n }\n\n public async getStatus(): Promise<Status> {\n if (!isSubmitResponse(this.data)) {\n throw new Error('Should submit form first');\n }\n\n const params: StatusRequestParams = {\n pid: this.config.paymentMethodId,\n invoice: parseInt(this.data.fixInvoice ?? ''),\n signature: this.data.signature ?? '',\n locale:\n this.data.fields.find((field) => field.name === 'locale')?.value ??\n 'en',\n isSavePaymentAccount: this.isSavingMethodMode\n ? XpsBoolean.true\n : XpsBoolean.false,\n };\n return this.statusService.getStatus(params);\n }\n\n public async listenFinalStatus(): Promise<void> {\n const { invoice } = await this.getStatus();\n\n this.statusService\n .listenFinalStatus(invoice as unknown as number)\n .pipe(take(1))\n .subscribe(() => {\n this.nextActionService.emitFlowUpdates(\n this.checkStatusActionCreator.getActionData()\n );\n });\n }\n\n public getFieldConfig(field: Field): ControlConfig | null {\n return this.controlConfigService.getConfig(field);\n }\n\n public changeFieldValue(name: string, value: string): void {\n const formControl = this.form?.get(name);\n formControl?.setValue(value);\n }\n\n public changeFieldState(name: string, state: InputEventName): void {\n const formControl = this.form?.get(name);\n\n if (!this.form || !formControl) {\n return;\n }\n\n switch (state) {\n case InputEventName.blur: {\n formControl.markAsTouched();\n this.focusFieldName = null;\n break;\n }\n case InputEventName.focus: {\n formControl.markAsUntouched();\n this.focusFieldName = name;\n break;\n }\n }\n\n this.emitFormFieldsStatus(this.form);\n }\n\n public addExtraField(name: string, value: string): void {\n const isHaveField = this.fields.find((field) => {\n return field.name === name;\n });\n\n if (isHaveField) {\n this.fields = this.fields.map((field) => {\n if (field.name === name) {\n field.value = value;\n }\n\n return field;\n });\n return;\n }\n\n const field = {\n name: name,\n value: value,\n title: '',\n type: 'text',\n example: '',\n isMandatory: XpsBoolean.true,\n isVisible: XpsBoolean.false,\n } as Field;\n\n this.fields.push(field);\n }\n\n public destroy(): void {\n this.data = null;\n this.financeDetails = null;\n this.form = null;\n this.fields = [];\n this.formDestroy$.next();\n this.destroy$.next();\n\n this.threeDsService.stopChecking();\n }\n\n private emitFinanceDetails(summary?: XpsSummary): void {\n this.financeDetailsService.emitWithSummary(summary);\n }\n\n private emitCreditCardState(idCardType: string): void {\n this.creditCardStateService.emit({ idCardType });\n }\n\n private emitFormFieldsStatus(form: UntypedFormGroup): void {\n const formFieldsStatus: FormFieldsStatus = {};\n\n Object.keys(form.controls).forEach((name) => {\n const control = form.controls[name];\n formFieldsStatus[name] = {\n name: name,\n validationStatus: control.status,\n errors: control.errors,\n isFocused: this.focusFieldName === name,\n isTouched: control.touched,\n };\n });\n\n this.formFieldsStatusSubject.next(formFieldsStatus);\n }\n\n private emitFormMessages(messages?: XpsMessage[]): void {\n this.formMessagesService.emitOnResponse(messages);\n }\n\n private setupSyncService(form: UntypedFormGroup, fields: Field[]): void {\n this.syncService.setup(form, fields);\n this.syncService.data$\n .pipe(takeUntil(this.destroy$))\n .subscribe((response) => {\n this.emitFinanceDetails(response.summary);\n this.emitFormMessages(response.messages);\n this.emitFormResponse(response);\n });\n\n this.syncService.fieldAsyncValidation$\n .pipe(takeUntil(this.destroy$))\n .subscribe((fieldAsyncValidation) => {\n switch (fieldAsyncValidation.field.name) {\n case FieldNames.cardNumber:\n this.emitCreditCardState(\n fieldAsyncValidation.response.parameters.idCardType\n );\n }\n });\n }\n\n private listenFinanceDetails(): void {\n this.financeDetailsService.data$\n .pipe(takeUntil(this.destroy$))\n .subscribe((financeDetails) => (this.financeDetails = financeDetails));\n }\n\n private listenFormStatusChanges(form: UntypedFormGroup): void {\n form.statusChanges\n .pipe(takeUntil(this.formDestroy$))\n .subscribe((status: FormControlStatus) => {\n this.emitFormFieldsStatus(form);\n this._paymentForm$.next(status);\n });\n }\n\n /*\n * in case the form pid changes despite the one passed during initialization\n * */\n private updatePidConfig(): void {\n const currentPid = this.getPid();\n if (currentPid) {\n this.config.paymentMethodId = currentPid;\n }\n }\n\n private emitFormResponse(data: FormResponse['data']): void {\n let type: FormResponse['type'];\n if (data instanceof InitializeResponse) {\n type = 'initialize';\n } else if (data instanceof SubmitResponse) {\n type = 'submit';\n } else {\n type = 'sync';\n }\n this._formResponse$.next({\n type,\n data,\n token: this.settingsService.token,\n isSandbox: this.settingsService.isSandboxMode(),\n });\n }\n\n private getInitializeMessages(): XpsMessage[] {\n const messages = (this.data as InitializeResponse).paymentForm?.messages;\n const koreaNotification = (this.data as InitializeResponse).paymentForm\n ?.koreaNotification;\n if (koreaNotification) {\n messages?.push({ code: '0', message: koreaNotification?.title });\n }\n return messages ?? [];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SettingsService } from '../../core/settings/settings.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class RefundPolicyService {\n public readonly defaultVersionId = 2;\n public readonly defaultUrl = 'https://xsolla.com/refund-policy-ps';\n\n public constructor(private readonly settingsService: SettingsService) {}\n\n public get url(): string {\n if (!this.settingsService.token) {\n return 'https://xsolla.com/refundpolicy/en-us';\n }\n const language = this.settingsService.user.local ?? 'en';\n const versionId =\n this.settingsService.project.refundPolicySettings?.policy_version_id ??\n this.defaultVersionId;\n const countryIso = this.settingsService.user.country.value ?? '';\n const projectId = this.settingsService.project.id;\n return `${this.defaultUrl}?policy_version_id=${versionId}&language=${language}&country=${countryIso}&project_id=${projectId}`;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SettingsService } from '../settings/settings.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SecureConnectionService {\n public get isWhiteLabel(): boolean {\n return !!this.settingsService.settings?.white_label;\n }\n public get secureConnectionUrl(): string | undefined {\n this.setSecureConnectionUrl();\n return this._secureConnectionUrl;\n }\n\n public readonly secureConnectionApi = 'https://verify.xsolla.com/?url=';\n\n private _secureConnectionUrl?: string;\n\n public constructor(private readonly settingsService: SettingsService) {}\n\n private setSecureConnectionUrl(): void {\n const projectUrl = this.settingsService.project?.projectUrl;\n\n if (projectUrl) {\n this._secureConnectionUrl = `${\n this.secureConnectionApi\n }${encodeURIComponent(projectUrl)}`;\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DisclaimerService {\n public readonly disclaimer = 'disclaimer';\n}\n","import { Injectable } from '@angular/core';\nimport { LegalComponentConfig } from './legal.component.config';\nimport { SettingsService } from '../settings/settings.service';\nimport { RefundPolicyService } from './refund-policy.service';\nimport { SecureConnectionService } from './secure-connection.service';\nimport { DisclaimerService } from './disclaimer.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LegalService {\n public readonly sctlPolicyUrl = 'https://xsolla.com/sctl';\n\n private get isJapanUser(): boolean {\n return this.settingsService.user?.local === 'ja';\n }\n\n public constructor(\n private readonly settingsService: SettingsService,\n private readonly refundPolicyService: RefundPolicyService,\n private readonly secureConnectionService: SecureConnectionService,\n private readonly disclaimerService: DisclaimerService\n ) {}\n\n public getLegalComponentConfig(): LegalComponentConfig {\n return {\n isJapanUser: this.isJapanUser,\n refundPolicyUrl: this.refundPolicyService.url,\n sctlPolicyUrl: this.sctlPolicyUrl,\n secureConnection: {\n secureConnectionUrl: this.secureConnectionService.secureConnectionUrl,\n isWhiteLabel: this.secureConnectionService.isWhiteLabel,\n },\n disclaimer: this.disclaimerService.disclaimer,\n };\n }\n}\n","import { lastValueFrom } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { HttpHeaders } from '@angular/common/http';\nimport { SettingsService } from '../settings/settings.service';\nimport { SecureApiClient } from '../http/secure-api/secure-api.service';\nimport { SavedMethodsService } from '../saved-methods/saved-methods.service';\nimport { DeleteMethodResponse } from './delete-method-response.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class EditSavedMethodsService {\n private readonly deleteRoute = 'savedmethods/delete';\n\n public constructor(\n private readonly savedMethodsService: SavedMethodsService,\n private readonly settingsService: SettingsService,\n private readonly secureApi: SecureApiClient\n ) {}\n\n public async deleteSavedMethodRequest(\n id: number,\n type: string\n ): Promise<boolean> {\n const token = this.settingsService.token;\n\n const parameters: {\n access_token: string;\n id: number;\n type: string;\n } = {\n access_token: token,\n id,\n type,\n };\n\n return lastValueFrom(\n this.secureApi.post<DeleteMethodResponse>(\n this.deleteRoute,\n new URLSearchParams(parameters as unknown as { [key: string]: string }),\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n )\n .then(async () => {\n await this.savedMethodsService.getList(true);\n return true;\n })\n .catch(() => {\n return false;\n });\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { interval, Observable, of, Subject } from 'rxjs';\nimport { debounce, filter, map } from 'rxjs/operators';\nimport { XhrAction } from './xhr-action.interface';\nimport { ExtendedWindow } from '../extended-window.interface';\nimport { windowToken } from '../window.token';\nimport { defaultApiUrl, sandboxApiUrl } from '../http/secure-api/api-url.const';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class XhrActionService {\n private readonly pauseTime = 1000;\n private readonly userInputEventNames: string[] = ['click', 'change'];\n private isXhrActionStarted = false;\n private apiRequestEntries: PerformanceResourceTiming[] = [];\n private cdnRequestEntries: PerformanceResourceTiming[] = [];\n private readonly entriesSubject = new Subject<PerformanceResourceTiming>();\n\n public constructor(\n @Inject(windowToken)\n private readonly window: ExtendedWindow\n ) {}\n\n public getXhrAction(): Observable<XhrAction> {\n if (!this.window.performance || !this.window.PerformanceObserver) {\n return of();\n }\n\n this.getUserInput().subscribe(() =>\n this.window.performance.mark('userInput')\n );\n\n this.getPerformance().subscribe((entry: PerformanceResourceTiming) =>\n this.processEntry(entry)\n );\n\n return this.getPauseEvent().pipe(\n map<PerformanceResourceTiming, XhrAction>(() => {\n const event: XhrAction = {\n name: this.getApiRequestName(),\n duration: this.getDuration([\n ...this.apiRequestEntries,\n ...this.cdnRequestEntries,\n ]),\n apiRequestCount: this.apiRequestEntries.length,\n apiRequestDuration: this.getDuration(this.apiRequestEntries),\n cdnRequestCount: this.cdnRequestEntries.length,\n cdnRequestDuration: this.getDuration(this.cdnRequestEntries),\n };\n\n this.stopXhrAction();\n\n return event;\n })\n );\n }\n\n private processEntry(entry: PerformanceResourceTiming): void {\n const isApiRequest: boolean = entry.name.includes(\n defaultApiUrl || sandboxApiUrl\n );\n\n const cdnUrl = '';\n const isCdnRequest: boolean =\n !isApiRequest && entry.name.startsWith(cdnUrl);\n\n if (this.isXhrActionStarted && isApiRequest) {\n this.apiRequestEntries.push(entry);\n }\n\n if (this.isXhrActionStarted && isCdnRequest) {\n this.cdnRequestEntries.push(entry);\n }\n\n if (isApiRequest && !this.isXhrActionStarted) {\n const userInputEntries: PerformanceEntry[] =\n this.window.performance.getEntriesByName('userInput', 'mark');\n const userInputEntry: PerformanceEntry =\n userInputEntries[userInputEntries.length - 1];\n\n if (userInputEntry) {\n this.startXhrAction(entry);\n }\n }\n\n if (isApiRequest || isCdnRequest) {\n this.entriesSubject.next(entry);\n }\n }\n\n private startXhrAction(xhrEntry: PerformanceResourceTiming): void {\n this.isXhrActionStarted = true;\n this.apiRequestEntries.push(xhrEntry);\n }\n\n private stopXhrAction(): void {\n this.isXhrActionStarted = false;\n this.apiRequestEntries = [];\n this.cdnRequestEntries = [];\n }\n\n private getUserInput(): Subject<void> {\n const userInputSubject: Subject<void> = new Subject();\n\n this.userInputEventNames.forEach((eventName: string) => {\n this.window.addEventListener(eventName, () => userInputSubject.next());\n });\n\n return userInputSubject;\n }\n\n private getPerformance(): Subject<PerformanceResourceTiming> {\n const performanceSubject: Subject<PerformanceResourceTiming> =\n new Subject();\n\n if (this.window.PerformanceObserver) {\n const observer = new this.window.PerformanceObserver(\n (list: PerformanceObserverEntryList) => {\n list.getEntries().forEach((entry: PerformanceEntry): void => {\n return performanceSubject.next(entry as PerformanceResourceTiming);\n });\n }\n );\n\n observer.observe({ entryTypes: ['resource'] });\n }\n\n return performanceSubject;\n }\n\n private getApiRequestName(): string {\n return this.apiRequestEntries[0].name.split(defaultApiUrl)[1].split('?')[0];\n }\n\n private getDuration(entries: PerformanceResourceTiming[]): number {\n if (!entries.length) {\n return 0;\n }\n\n const firstApiRequestEntry: PerformanceResourceTiming = entries.reduce(\n (prev, current) => (prev.startTime < current.startTime ? prev : current)\n );\n const lastApiRequestEntry: PerformanceResourceTiming = entries.reduce(\n (prev, current) =>\n prev.responseEnd > current.responseEnd ? prev : current\n );\n\n return Math.round(\n lastApiRequestEntry.responseEnd - firstApiRequestEntry.startTime\n );\n }\n\n private getPauseEvent(): Observable<PerformanceResourceTiming> {\n return this.entriesSubject.pipe(\n debounce(() => interval(this.pauseTime)),\n filter(() => this.isXhrActionStarted)\n );\n }\n}\n","import { Inject, Injectable, NgZone } from '@angular/core';\nimport { UserBehaviourAnalyticsService } from '../user-behaviour-analytics/user-behaviour-analytics.service';\nimport { XhrActionService } from './xhr-action.service';\nimport { XhrAction } from './xhr-action.interface';\nimport { userBehaviourEventTypes } from '../user-behaviour-analytics/user-behaviour-event/user-behaviour-event-types';\nimport { eventCategories } from '../user-behaviour-analytics/user-behaviour-event/user-behaviour-event-categories';\nimport { Observable } from 'rxjs';\nimport { ExtendedWindow } from '../extended-window.interface';\nimport { windowToken } from '../window.token';\nimport { defaultApiUrl } from '../http/secure-api/api-url.const';\nimport { SendEventMethodOptionsInterface } from '../user-behaviour-analytics/user-behaviour-analytics.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PerformanceService {\n private readonly navigationPerformance =\n this.window.performance?.getEntriesByType('navigation')?.[0] as\n | PerformanceNavigationTiming\n | undefined;\n\n private readonly resourcesPerformance =\n this.window.performance?.getEntriesByType('resource') as\n | PerformanceResourceTiming[]\n | undefined;\n\n private get network(): number | undefined {\n return this.navigationPerformance?.responseEnd;\n }\n\n private get runApp(): number | null {\n const domComplete = this.navigationPerformance?.domComplete;\n\n if (domComplete == null || this.network == null) {\n return null;\n }\n\n return domComplete - this.network;\n }\n\n public constructor(\n private readonly userBehaviourAnalyticsService: UserBehaviourAnalyticsService,\n private readonly xhrActionService: XhrActionService,\n @Inject(windowToken)\n private readonly window: ExtendedWindow,\n private readonly zone: NgZone\n ) {}\n\n public init(): undefined | void {\n if (!this.window?.performance) {\n return;\n }\n\n this.zone.runOutsideAngular(() => {\n this.measureInitialValues();\n this.listenXhrActions();\n });\n }\n\n private getInitRequest(): {\n duration: number;\n timeReserve: number;\n utilsDuration: number;\n } | null {\n if (!this.navigationPerformance || !this.resourcesPerformance) {\n return null;\n }\n\n const utilsTiming: PerformanceResourceTiming | undefined =\n this.resourcesPerformance.find((performance: PerformanceResourceTiming) =>\n performance.name.includes(`${defaultApiUrl}utils`)\n );\n\n if (!utilsTiming) {\n return null;\n }\n\n return {\n duration: utilsTiming.fetchStart - utilsTiming.responseEnd,\n timeReserve:\n this.navigationPerformance.domComplete - utilsTiming.responseEnd,\n utilsDuration: utilsTiming.duration,\n };\n }\n\n private sendMeasurement(\n name: string,\n value: number | null | undefined,\n additional?: {\n extraValue?: number | null | undefined;\n dimension1?: number | null | undefined;\n dimension2?: number | null | undefined;\n }\n ): void {\n if (value == null) {\n return;\n }\n\n const eventOptions: SendEventMethodOptionsInterface = {\n value: value.toString(),\n };\n\n if (additional) {\n Object.keys(additional).forEach((optionName: string): void => {\n const optionValue: number | null | undefined =\n additional[optionName as keyof typeof additional];\n if (optionValue != null) {\n eventOptions[optionName as keyof typeof additional] =\n optionValue.toString();\n }\n });\n }\n\n void this.userBehaviourAnalyticsService.send(\n name,\n userBehaviourEventTypes.manual,\n eventOptions\n );\n }\n\n private measureRunApp(): void {\n const sendRunApp = (): void =>\n void setTimeout(() => this.sendMeasurement('run-app', this.runApp));\n\n if (document.readyState === 'complete') {\n sendRunApp();\n } else {\n this.window.addEventListener('load', () => sendRunApp());\n }\n }\n\n private measureInitialValues(): void {\n const initRequest = this.getInitRequest();\n if (initRequest) {\n this.sendMeasurement('utils', initRequest.duration, {\n extraValue: initRequest.timeReserve,\n dimension1: initRequest.utilsDuration,\n });\n }\n this.sendMeasurement('network', this.network);\n this.measureRunApp();\n }\n\n private listenXhrActions(): void {\n const xhrAction: Observable<XhrAction> =\n this.xhrActionService.getXhrAction();\n\n xhrAction.subscribe((event: XhrAction) => {\n void this.userBehaviourAnalyticsService.send(\n `xhr-action:${event.name}`,\n userBehaviourEventTypes.manual,\n {\n value: event.duration.toString(),\n eventCategory: eventCategories.withoutInvoice,\n extraValue: JSON.stringify(event),\n }\n );\n });\n }\n}\n","import { SavedMethodsService } from '../saved-methods/saved-methods.service';\nimport { PaymentMethodsService } from '../payment-methods/payment-methods.service';\nimport { Injectable } from '@angular/core';\nimport { CombinedPaymentMethods } from './combined-payment-methods.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CombinedPaymentMethodsService {\n public constructor(\n private readonly paymentMethodsService: PaymentMethodsService,\n private readonly savedMethodsService: SavedMethodsService\n ) {}\n\n public async getCombinedPaymentMethods(): Promise<CombinedPaymentMethods> {\n const [paymentMethods, savedMethods] = await Promise.all([\n this.paymentMethodsService.getAllMethods(),\n this.savedMethodsService.getList(),\n ]);\n\n return {\n paymentMethods: {\n quick: paymentMethods.especial,\n remained: paymentMethods.remained,\n },\n savedMethods,\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpHeaders } from '@angular/common/http';\nimport { map, tap } from 'rxjs/operators';\nimport { CountryResponse } from './country-response.interface';\nimport { BehaviorSubject, lastValueFrom } from 'rxjs';\nimport { SettingsService } from '../settings/settings.service';\nimport { SecureApiClient } from '../http/secure-api/secure-api.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CountriesApiService {\n public countries$: BehaviorSubject<CountryResponse['countryList'] | null> =\n new BehaviorSubject<CountryResponse['countryList'] | null>(null);\n\n private readonly apiRoute = 'country';\n\n public constructor(\n private readonly secureApi: SecureApiClient,\n private readonly settingsService: SettingsService\n ) {}\n\n public async request(): Promise<CountryResponse['countryList']> {\n const token = this.settingsService.token;\n\n return lastValueFrom(\n this.secureApi\n .post<CountryResponse>(\n this.apiRoute,\n { access_token: token },\n {\n headers: new HttpHeaders().set(\n 'Content-Type',\n 'application/x-www-form-urlencoded; charset=utf-8'\n ),\n responseType: 'json',\n }\n )\n .pipe(\n map((response: CountryResponse) => {\n return response.countryList;\n }),\n tap((value) => {\n this.countries$.next(value);\n return value;\n })\n )\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { InitConfiguration } from './core/settings/configuration.interface';\nimport { SettingsService } from './core/settings/settings.service';\nimport { CountryService } from './core/country/country.service';\nimport { PaymentMethodsService } from './core/payment-methods/payment-methods.service';\nimport { PaymentMethod } from './core/payment-methods/payment-method.interface';\nimport { SavedMethodsService } from './core/saved-methods/saved-methods.service';\nimport { SavedMethod } from './core/saved-methods/saved-method.interface';\nimport { UserBalanceResponse } from './core/user-balance/user-balance-response.class';\nimport { UserBalanceService } from './core/user-balance/user-balance.service';\nimport { PaymentConfig } from './core/payment/payment-config.interface';\nimport { PaymentService } from './core/payment/payment.service';\nimport { Payment } from './core/payment/payment.interface';\nimport { Field } from './core/payment/field.interface';\nimport { DeviceFingerPrintService } from './core/device-finger-print/device-finger-print.service';\nimport { LegalService } from './core/legal/legal.service';\nimport { LegalComponentConfig } from './core/legal/legal.component.config';\nimport { NextActionService } from './core/payment/actions/next-action.service';\nimport { FinanceDetailsService } from './core/payment/finance-details/finance-details.service';\nimport { PaymentConfigService } from './core/payment/config/config.service';\nimport { Status } from './core/payment/status/status.interface';\nimport { StatusService } from './core/payment/status/status.service';\nimport { CreditCardService } from './core/credit-card/credit-card.service';\nimport { CreditCardTypes } from './core/credit-card/credit-card-types.enum';\nimport { CreditCard } from './core/credit-card/credit-card.interface';\nimport { InputEventName } from './core/payment/form/input-event.enum';\nimport { CreditCardStateService } from './core/payment/credit-card-state/credit-card-state.service';\nimport { Observable } from 'rxjs';\nimport { CreditCardState } from './core/payment/credit-card-state/credit-card-state.interface';\nimport { FormState } from './core/payment/form/form-state.interface';\nimport { FinanceDetails } from './core/payment/finance-details/finance-details.interface';\nimport { NextAction } from './core/payment/actions/next-action.interface';\nimport { Balance } from './core/settings/balance.interface';\nimport { FormMessagesService } from './core/payment/form-messages/form-messages.service';\nimport { EditSavedMethodsService } from './core/edit-saved-methods/edit-saved-methods.service';\nimport { FormControlStatus } from '@angular/forms';\nimport { SdkPaymentSystems } from './core/sdk-payment-systems/sdk-payment-systems.interface';\nimport { FormResponse } from './core/payment/form-response.interface';\nimport { UserBehaviourAnalyticsService } from './core/user-behaviour-analytics/user-behaviour-analytics.service';\nimport { userBehaviourEventTypes } from './core/user-behaviour-analytics/user-behaviour-event/user-behaviour-event-types';\nimport { SendEventMethodOptionsInterface } from './core/user-behaviour-analytics/user-behaviour-analytics.interface';\nimport { PerformanceService } from './core/performance/performance.service';\nimport { FieldNames } from './core/payment/field-names.enum';\nimport { CombinedPaymentMethods } from './core/combined-payment-methods/combined-payment-methods.interface';\nimport { CombinedPaymentMethodsService } from './core/combined-payment-methods/combined-payment-methods.service';\nimport { CountriesApiService } from './core/countries-api/countries-api.service';\nimport { CountryResponse } from './core/countries-api/country-response.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CoreLibraryService {\n public paymentMethods = {\n getList: async (isSaveMethodMode?: boolean): Promise<PaymentMethod[]> =>\n this.paymentMethodsService.getList(isSaveMethodMode),\n\n getQuickMethods: async (): Promise<PaymentMethod[]> =>\n this.paymentMethodsService.getQuickMethods(),\n getSavedMethods: async (): Promise<SavedMethod[]> =>\n this.savedMethodsService.getList(),\n getCombinedPaymentMethods: async (): Promise<CombinedPaymentMethods> =>\n this.combinedPaymentMethodsService.getCombinedPaymentMethods(),\n getUserBalance: async (): Promise<UserBalanceResponse> =>\n this.userBalanceService.getUserBalance(),\n deleteSavedMethod: async (id: number, type: string): Promise<boolean> =>\n this.editSavedMethodsService.deleteSavedMethodRequest(id, type),\n };\n\n public sdkPaymentSystems: SdkPaymentSystems = {\n getInitialData: () =>\n this.paymentService.getInitialDataForSdkPaymentSystems(),\n };\n\n public constructor(\n private readonly settingsService: SettingsService,\n private readonly countryService: CountryService,\n private readonly paymentMethodsService: PaymentMethodsService,\n private readonly savedMethodsService: SavedMethodsService,\n private readonly userBalanceService: UserBalanceService,\n private readonly paymentConfigService: PaymentConfigService,\n private readonly paymentService: PaymentService,\n private readonly deviceFingerPrintService: DeviceFingerPrintService,\n private readonly financeDetailsService: FinanceDetailsService,\n private readonly legalService: LegalService,\n private readonly statusService: StatusService,\n private readonly nextActionService: NextActionService,\n private readonly creditCardService: CreditCardService,\n private readonly creditCardStateService: CreditCardStateService,\n private readonly formMessagesService: FormMessagesService,\n private readonly editSavedMethodsService: EditSavedMethodsService,\n private readonly userBehaviourAnalyticsService: UserBehaviourAnalyticsService,\n private readonly performanceService: PerformanceService,\n private readonly combinedPaymentMethodsService: CombinedPaymentMethodsService,\n private readonly countriesApiService: CountriesApiService\n ) {}\n\n public async init(configuration: InitConfiguration): Promise<void> {\n await this.settingsService.init(configuration);\n this.performanceService.init();\n this.userBehaviourAnalyticsService.init();\n this.deviceFingerPrintService.init();\n }\n\n public async getStatus(url?: string): Promise<Status> {\n return this.statusService.getStatusWithUrlSearchParams(url);\n }\n\n public sendAnalytics(\n action: string,\n type: keyof typeof userBehaviourEventTypes,\n options?: SendEventMethodOptionsInterface\n ): void {\n this.userBehaviourAnalyticsService.send(action, type, options);\n }\n\n public getQrCodeInitialData(): {\n qrCode: string;\n pid: number | null;\n } {\n return {\n qrCode: this.paymentService.getQrCode(),\n pid: this.paymentService.getPid(),\n };\n }\n\n public async getCountries(): Promise<CountryResponse['countryList']> {\n return this.countriesApiService.request();\n }\n\n public setCountry(country: string): void {\n this.countryService.setCountry(country);\n }\n\n public getCountry(): string {\n return this.countryService.getCountry();\n }\n\n public createPayment(config: PaymentConfig): Payment {\n const enrichedConfig = this.paymentConfigService.enrich(config);\n\n return {\n initialize: async () => this.paymentService.initialize(enrichedConfig),\n submit: async () => this.paymentService.submit(),\n getFields: () => this.paymentService.getFields(),\n getPid: () => this.paymentService.getPid(),\n getSubmitButtonText: () => this.paymentService.getSubmitButtonText(),\n validate: async (field: Field) => this.paymentService.validate(field),\n getFinanceDetails: () => this.paymentService.getFinanceDetails(),\n runThreeDs: () => this.paymentService.runThreeDs(),\n getStatus: async () => this.paymentService.getStatus(),\n listenFinalStatus: async () => this.paymentService.listenFinalStatus(),\n financeDetailsUpdates$: this.financeDetailsService.data$,\n form: {\n fieldsStatus$: this.paymentService.formFieldsStatus$,\n getControlConfig: (field: Field) =>\n this.paymentService.getFieldConfig(field),\n changeFieldValue: (name: string, value: string) =>\n this.paymentService.changeFieldValue(name, value),\n changeFieldState: (name: string, state: InputEventName) =>\n this.paymentService.changeFieldState(name, state),\n updateFieldFormState: (fieldName: string, formState: FormState) =>\n this.paymentService.updateFieldFormState(fieldName, formState),\n getFieldFormState: (fieldName: FieldNames) =>\n this.paymentService.getFieldFormState(fieldName),\n formMessages$: this.formMessagesService.data$,\n getFormStatus: () => this.paymentService.form?.status,\n getControlStatus: (name: FieldNames) =>\n this.paymentService.getControlStatus(name),\n },\n addExtraField: (name: string, value: string): void =>\n this.paymentService.addExtraField(name, value),\n };\n }\n\n public getCreditCardService(): CreditCard {\n return {\n getTypeByNumber: (cardNumber: string) =>\n this.creditCardService.getTypeByNumber(cardNumber),\n getCreditCardSettings: (cardType: CreditCardTypes) =>\n this.creditCardService.getCreditCardSettings(cardType),\n cardTypeUpdates$: this.creditCardStateService.data$,\n };\n }\n\n public get flowUpdates$(): Observable<NextAction> {\n return this.nextActionService.flowUpdates$;\n }\n\n public get financeDetailsUpdates$(): Observable<FinanceDetails> {\n return this.financeDetailsService.data$;\n }\n\n public get cardTypeUpdates$(): Observable<CreditCardState> {\n return this.creditCardStateService.data$;\n }\n\n public getLegalComponentConfig(): LegalComponentConfig {\n return this.legalService.getLegalComponentConfig();\n }\n\n public getUserBalanceValue(): Balance | null {\n return this.userBalanceService.getUserBalanceValue();\n }\n\n public get paymentForm$(): Observable<FormControlStatus | null> {\n return this.paymentService.paymentForm$;\n }\n\n public get formResponse$(): Observable<FormResponse | null> {\n return this.paymentService.formResponse$;\n }\n\n public get formResponseValue(): FormResponse | null {\n return this.paymentService.formResponseValue;\n }\n}\n","import { HttpErrorResponse, HttpRequest } from '@angular/common/http';\nimport { AppError } from './app-error.class';\nimport { HttpErrorData } from '../http-interceptor/http-error-data.interface';\nimport { HttpErrorResponseData } from '../http-interceptor/http-error-response-data.interface';\n\nexport class HttpError extends AppError {\n private readonly RESTRICTED_KEYS_REGEXP = new RegExp(\n '.*(card_number|number|cvv|cvn|month|year|cardholdername|client_data|dfp|password).*',\n 'i'\n );\n private readonly httpErrorData!: HttpErrorData;\n\n public constructor(error: HttpErrorResponse, req: HttpRequest<unknown>) {\n super(error.message);\n\n this.httpErrorData = {\n request: {\n url: req.url,\n method: req.method,\n headers: req.headers,\n },\n response: {\n status: error.status,\n headers: error.headers,\n },\n };\n\n if (req.body) {\n this.httpErrorData.request.data = this.cleanPersonalData(\n req.body as { [key: string]: unknown }\n );\n }\n\n if (error.statusText) {\n const errorData = error.error as HttpErrorResponseData;\n\n this.httpErrorData.response.data = {\n statusText: error.statusText,\n errors: errorData?.errors ?? [],\n };\n }\n }\n\n public getHttpErrorData(): HttpErrorData {\n return this.httpErrorData;\n }\n\n private cleanPersonalData(data: { [key: string]: unknown }): {\n [key: string]: unknown;\n } {\n return Object.entries(data).reduce((acc, [key, val]) => {\n return {\n ...acc,\n [key]: this.RESTRICTED_KEYS_REGEXP.test(key) ? '***' : val,\n };\n }, {});\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n HttpErrorResponse,\n HttpEvent,\n HttpHandler,\n HttpInterceptor,\n HttpRequest,\n} from '@angular/common/http';\n\nimport { catchError } from 'rxjs/operators';\nimport { Router } from '@angular/router';\nimport { Observable, throwError } from 'rxjs';\nimport { HttpError } from '../errors/http-error.class';\n@Injectable()\nexport class HttpExceptionsInterceptor implements HttpInterceptor {\n public constructor(public router: Router) {}\n\n public intercept(\n req: HttpRequest<unknown>,\n next: HttpHandler\n ): Observable<HttpEvent<unknown>> {\n return next.handle(req).pipe(\n catchError((error: HttpErrorResponse) => {\n return throwError(() => new HttpError(error, req));\n })\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CreditCardMinLengthValidator } from './credit-card-length/credit-card-min-length.validator';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule],\n providers: [CreditCardMinLengthValidator],\n})\nexport class ValidatorsModule {}\n","import { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ControlConfigService } from './controls/control-config.service';\nimport { convertersMap, convertersMapToken } from './converters/converters-map';\nimport { EmailConverter } from './converters/email/email.converter';\nimport { ZipConverter } from './converters/zip/zip.converter';\nimport { FormService } from './form.service';\nimport { CardNumberConverter } from './converters/card-number/card-number.converter';\nimport { CardMonthConverter } from './converters/card-month/card-month.converter';\nimport { CvvConverter } from './converters/cvv/cvv.converter';\nimport { ValidatorsModule } from './validators/validators.module';\nimport { BirthDateConverter } from './converters/birth-date/birth-date.converter';\nimport { CardholderNameConverter } from './converters/cardholder-name/cardholder-name.converter';\nimport { CpfNameConverter } from './converters/cpf-name/cpf-name.converter';\nimport { CpfNumberConverter } from './converters/cpf-number/cpf-number.converter';\nimport { StreetNumberConverter } from './converters/street-number/street-number.converter';\nimport { TextConverter } from './converters/text/text.converter';\nimport { CardYearConverter } from './converters/card-year/card-year.converter';\nimport { CheckboxConverter } from './converters/checkbox/checkbox.converter';\nimport { SelectConverter } from './converters/select/select.converter';\nimport { PinConverter } from './converters/pin/pin.converter';\nimport { RadioGroupConverter } from './converters/radio-group/radio-group.converter';\nimport { PricepointConverter } from './converters/pricepoint/pricepoint.converter';\nimport { CouponConverter } from './converters/coupon/coupon.converter';\nimport { PhoneConverter } from './converters/phone.converter';\n\n@NgModule({\n imports: [ReactiveFormsModule, ValidatorsModule],\n providers: [\n FormService,\n ControlConfigService,\n CardNumberConverter,\n CardMonthConverter,\n CardYearConverter,\n CvvConverter,\n CvvConverter,\n ZipConverter,\n CardholderNameConverter,\n CpfNumberConverter,\n CpfNameConverter,\n BirthDateConverter,\n TextConverter,\n CheckboxConverter,\n SelectConverter,\n PinConverter,\n RadioGroupConverter,\n EmailConverter,\n EmailConverter,\n EmailConverter,\n StreetNumberConverter,\n PricepointConverter,\n PricepointConverter,\n CouponConverter,\n TextConverter,\n PhoneConverter,\n { provide: convertersMapToken, useValue: convertersMap },\n ],\n})\nexport class FormModule {}\n","import { NgModule } from '@angular/core';\nimport { UnescapeHtmlPipe } from './unescape-html/unescape-html.pipe';\n\n@NgModule({\n declarations: [UnescapeHtmlPipe],\n providers: [UnescapeHtmlPipe],\n exports: [UnescapeHtmlPipe],\n})\nexport class PipesModule {}\n","import { NgModule, TypeProvider } from '@angular/core';\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\nimport { HttpExceptionsInterceptor } from './core/exceptions-handling/http-interceptor/http-exceptions.interceptor';\nimport { windowToken } from './core/window.token';\nimport { paymentMethodsResponseFactoryProvider } from './core/payment-methods/payment-methods-response.token';\nimport { savedMethodsResponseFactoryProvider } from './core/saved-methods/saved-methods-response.token';\nimport { userBalanceResponseFactoryProvider } from './core/user-balance/user-balance-response.token';\nimport { initializeResponseFactoryProvider } from './core/payment/initialize/response/initialize-response.token';\nimport { submitRequestFactoryProvider } from './core/payment/submit/request/submit-request.token';\nimport { submitResponseFactoryProvider } from './core/payment/submit/response/submit-response.token';\nimport {\n flowUpdateNextActions,\n nextActions,\n nextActionsToken,\n} from './core/payment/actions/next-actions';\nimport { syncRequestFactoryProvider } from './core/payment/sync/request/sync-request.token';\nimport { syncResponseFactoryProvider } from './core/payment/sync/response/sync-response.token';\nimport { FormModule } from './core/payment/form/form.module';\nimport { statusRequestFactoryProvider } from './core/payment/status/status-request/request/status-request.token';\nimport { statusResponseFactoryProvider } from './core/payment/status/status-request/response/status-response.token';\nimport { checkStatusRequestFactoryProvider } from './core/payment/status/check-status/request/check-status-request.token';\nimport { checkStatusResponseFactoryProvider } from './core/payment/status/check-status/response/check-status-response.token';\nimport { statusThreeDsRequestFactoryProvider } from './core/payment/three-ds/api/status-three-ds/request/status-three-ds-request.token';\nimport { statusThreeDsResponseFactoryProvider } from './core/payment/three-ds/api/status-three-ds/response/status-three-ds-response.token';\nimport { notifyDfpStatusRequestFactoryProvider } from './core/payment/three-ds/api/notify-dfp-status/request/notify-dfp-status-request.token';\nimport { PipesModule } from './shared/pipes/pipes.module';\n\n@NgModule({\n imports: [HttpClientModule, FormModule, PipesModule],\n providers: [\n {\n provide: HTTP_INTERCEPTORS,\n useClass: HttpExceptionsInterceptor,\n multi: true,\n },\n { provide: windowToken, useValue: window },\n paymentMethodsResponseFactoryProvider,\n savedMethodsResponseFactoryProvider,\n userBalanceResponseFactoryProvider,\n initializeResponseFactoryProvider,\n submitRequestFactoryProvider,\n submitResponseFactoryProvider,\n syncRequestFactoryProvider,\n syncResponseFactoryProvider,\n statusRequestFactoryProvider,\n statusResponseFactoryProvider,\n checkStatusRequestFactoryProvider,\n checkStatusResponseFactoryProvider,\n statusThreeDsRequestFactoryProvider,\n statusThreeDsResponseFactoryProvider,\n notifyDfpStatusRequestFactoryProvider,\n {\n provide: nextActionsToken,\n useValue: nextActions,\n },\n ...(nextActions as TypeProvider[]),\n ...(flowUpdateNextActions as TypeProvider[]),\n ],\n})\nexport class CoreLibraryModule {}\n","import { Inject, Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { GooglePayCheckout } from '../google-pay/google-pay-checkout.interface';\nimport { ExtendedWindow } from '../../extended-window.interface';\nimport { windowToken } from '../../window.token';\nimport { AppError } from '../../exceptions-handling/errors/app-error.class';\n\nexport type CommonCheckout = GooglePayCheckout;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PaymentSystemProcessingService {\n private readonly statusUrl: BehaviorSubject<string> = new BehaviorSubject('');\n private readonly initialize: BehaviorSubject<boolean> =\n new BehaviorSubject<boolean>(false);\n\n public constructor(\n @Inject(windowToken) private readonly window: ExtendedWindow\n ) {}\n\n public get initialize$(): Observable<boolean> {\n return this.initialize.asObservable();\n }\n\n public get status$(): Observable<string> {\n return this.statusUrl.asObservable().pipe(filter((status) => !!status));\n }\n\n public emitStatusUrl(statusUrl: string): void {\n this.statusUrl.next(statusUrl);\n }\n\n public emitInitialize(isInitialized: boolean): void {\n this.initialize.next(isInitialized);\n }\n\n public getDecodedCheckout<T extends CommonCheckout>(\n base64checkoutData: string\n ): T {\n try {\n return JSON.parse(atob(base64checkoutData)) as T;\n } catch (error: unknown) {\n throw new AppError('load script service: decode error');\n }\n }\n\n public loadScript(\n url: string,\n onLoad: () => void,\n addScriptCustomAttributes?: (script: HTMLScriptElement) => HTMLScriptElement\n ): void {\n this.initialize.next(false);\n let script: HTMLScriptElement =\n this.window.document.createElement('script');\n\n script.async = true;\n script.src = url;\n\n if (addScriptCustomAttributes) {\n script = addScriptCustomAttributes(script);\n }\n\n this.window.document.body.append(script);\n\n script.onload = () => {\n try {\n onLoad();\n } catch (error: unknown) {\n let message = error;\n\n if (error instanceof Error) {\n message = error.message;\n }\n throw new AppError(\n `Pages: error during script onload handler: ${\n message as string\n }, url - ${url}`\n );\n }\n };\n\n script.onerror = (\n event: Event | string,\n source?: string,\n lineno?: number,\n colno?: number,\n error?: Error\n ) => {\n const errorMessage = error ? error.message : '';\n\n let eventMessage = event as string;\n\n if (typeof event === 'object') {\n eventMessage = JSON.stringify(event);\n }\n\n throw new AppError(\n `Pages: error during script onerror handler:\n url - ${url},\n event - ${eventMessage},\n source - ${source ?? ''},\n lineno - ${lineno ?? ''},\n colno - ${colno ?? ''},\n error - ${errorMessage}`\n );\n };\n }\n\n public isInitialized(): boolean {\n return this.initialize.getValue();\n }\n}\n","import { Inject, Injectable, Injector } from '@angular/core';\nimport { GooglePayCheckout } from './google-pay-checkout.interface';\nimport {\n GooglePayClient,\n GooglePayPaymentRequest,\n} from './google-pay-library.interface';\nimport { BehaviorSubject, filter, Observable, take } from 'rxjs';\nimport { PaymentSystemProcessingService } from '../payment-systems/payment-system-processing.service';\nimport { windowToken } from '../../window.token';\nimport { ExtendedWindow } from '../../extended-window.interface';\nimport { AppError } from '../../exceptions-handling/errors/app-error.class';\nimport { GooglePayInitParams } from './google-pay-init-params.interface';\nimport { NextAction } from '../../payment/actions/next-action.interface';\nimport { CheckStatusActionCreator } from '../../payment/actions/check-status/check-status.action.class';\nimport { CheckStatusAction } from '../../payment/actions/check-status/check-status.action.type';\nimport { GooglePayButtonColorType } from './google-pay-button-color.type';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GooglePayService {\n private readonly googlePayScriptUrl = 'https://pay.google.com/gp/p/js/pay.js';\n\n private readonly readyToPay = new BehaviorSubject<boolean | null>(null);\n\n private checkout: GooglePayCheckout | null = null;\n private googlePaymentClient: GooglePayClient | null = null;\n\n private isSandbox!: boolean;\n private country!: string;\n\n private get libraryWasInitialized(): boolean {\n return !!this.window.google;\n }\n\n private get googlePaymentClientWasInitialized(): boolean {\n return !!this.googlePaymentClient;\n }\n\n public constructor(\n @Inject(windowToken) private readonly window: ExtendedWindow,\n public readonly paymentSystemProcessingService: PaymentSystemProcessingService,\n public readonly injector: Injector\n ) {}\n\n public get readyToPay$(): Observable<boolean | null> {\n return this.readyToPay.asObservable();\n }\n\n public isReadyToPay(): boolean | null {\n return this.readyToPay.getValue();\n }\n\n public initGooglePayLibrary(data: GooglePayInitParams): void {\n this.isSandbox = data.isSandbox;\n this.country = data.country;\n\n if (this.libraryWasInitialized && this.googlePaymentClientWasInitialized) {\n return;\n }\n\n if (this.libraryWasInitialized && !this.googlePaymentClientWasInitialized) {\n this.setupGooglePayClient();\n return;\n }\n\n this.paymentSystemProcessingService.loadScript(\n this.googlePayScriptUrl,\n this.onLoadScript.bind(this)\n );\n }\n\n public checkPaymentDevice(base64checkoutData: string): void {\n this.paymentSystemProcessingService.initialize$\n .pipe(filter(Boolean), take(1))\n .subscribe(() => {\n this.checkout =\n this.paymentSystemProcessingService.getDecodedCheckout<GooglePayCheckout>(\n base64checkoutData\n );\n\n if (!this.checkout || !this.googlePaymentClient) {\n throw new AppError(\n `Google Pay: no checkout or google payment client, checkout - ${Boolean(\n this.checkout\n ).toString()}, client - ${Boolean(\n this.googlePaymentClient\n ).toString()}`\n );\n }\n\n const checkoutData = this.checkout.request.form.fields;\n const isReadyToPayRequest = JSON.parse(\n checkoutData.isReadyToPayRequest\n );\n\n this.googlePaymentClient\n .isReadyToPay(isReadyToPayRequest)\n .then((response) => {\n if (response.result && this.googlePaymentClient) {\n this.googlePaymentClient.prefetchPaymentData(\n JSON.parse(checkoutData.paymentDataRequest)\n );\n\n return this.readyToPay.next(true);\n }\n\n this.readyToPay.next(false);\n const result = response.result?.toString() ?? '';\n const isHavePaymentClient = Boolean(\n this.googlePaymentClient\n ).toString();\n\n throw new Error(\n `Google Pay: possibly no response.result or googlePaymentClient is missing, result - ${result}, isHavePaymentClient - ${isHavePaymentClient}`\n );\n })\n .catch((error) => {\n this.readyToPay.next(false);\n\n let message = (error as string) ?? '';\n\n if (error instanceof Error) {\n message = error.message;\n }\n\n throw new AppError(\n `Google Pay: device is not ready to pay, ${message}`\n );\n });\n });\n }\n\n public async proceedCheckout(): Promise<CheckStatusAction | null> {\n if (!this.checkout || !this.googlePaymentClient) {\n const isHaveCheckout = !!this.checkout;\n const isHaveClient = !!this.googlePaymentClient;\n\n throw new AppError(\n `Google Pay: no checkout or google payment client, checkout - ${isHaveCheckout.toString()}, client - ${isHaveClient.toString()}`\n );\n }\n\n const checkoutData = this.checkout.request.form.fields;\n\n const paymentDataRequest = JSON.parse(\n checkoutData.paymentDataRequest\n ) as GooglePayPaymentRequest;\n\n paymentDataRequest.transactionInfo = {\n currencyCode: checkoutData.currency,\n totalPriceStatus: 'FINAL',\n totalPrice: checkoutData.sum,\n countryCode: this.country,\n };\n\n const checkStatusAction: NextAction = this.injector\n .get<CheckStatusActionCreator>(CheckStatusActionCreator)\n .getActionData();\n\n try {\n const paymentData = await this.googlePaymentClient.loadPaymentData(\n paymentDataRequest\n );\n\n if (!paymentData?.paymentMethodData?.tokenizationData?.token) {\n throw new AppError('Google Pay: token is missing');\n }\n\n if (!this.checkout) {\n throw new AppError('Google Pay: no checkout data in then');\n }\n\n let returnUrl = this.checkout.request.form.fields.returnSuccessUrl;\n\n const data = this.checkout.request.form.fields;\n returnUrl += `&cpf_number=${data.cpf_number}&descriptor=${\n data.descriptor\n }&paymentData=${JSON.stringify(paymentData)}`;\n\n this.paymentSystemProcessingService.emitStatusUrl(returnUrl);\n\n return checkStatusAction;\n } catch (error: unknown) {\n if (!this.checkout) {\n throw new AppError(`Google Pay: no checkout data`);\n }\n\n const statusCode = (error as unknown as { statusCode?: string })\n ?.statusCode;\n\n const isStatusCanceled = statusCode && this.isCancelledStatus(statusCode);\n\n if (isStatusCanceled) {\n return null;\n }\n\n const returnUrl = this.checkout.request.form.fields.returnFailUrl;\n\n this.paymentSystemProcessingService.emitStatusUrl(returnUrl);\n\n return checkStatusAction;\n }\n }\n\n public createButton(\n onClickHandler: () => void,\n buttonColor: GooglePayButtonColorType = 'default'\n ): HTMLButtonElement | null {\n if (!this.checkout || !this.googlePaymentClient) {\n return null;\n }\n\n const checkoutData = this.checkout.request.form.fields;\n const paymentDataRequest = JSON.parse(\n checkoutData.paymentDataRequest\n ) as GooglePayPaymentRequest;\n\n return this.googlePaymentClient.createButton({\n onClick: onClickHandler,\n allowedPaymentMethods: paymentDataRequest.allowedPaymentMethods,\n buttonSizeMode: 'fill',\n buttonType: 'buy',\n buttonColor,\n });\n }\n\n private setupGooglePayClient(): void {\n if (!this.window.google) {\n return;\n }\n\n const environment = this.isSandbox ? 'TEST' : 'PRODUCTION';\n\n this.googlePaymentClient =\n new this.window.google.payments.api.PaymentsClient({\n environment,\n });\n }\n\n private onLoadScript(): void {\n if (!this.window.google) {\n const retryTimeout = 1000;\n\n setTimeout(() => {\n const isAvailableGoogleClient = !!this.window.google;\n\n if (isAvailableGoogleClient) {\n this.setupGooglePayClient();\n\n this.paymentSystemProcessingService.emitInitialize(true);\n }\n }, retryTimeout);\n\n throw new AppError('Google Pay: google library now is available');\n } else {\n this.setupGooglePayClient();\n\n this.paymentSystemProcessingService.emitInitialize(true);\n }\n }\n\n private isCancelledStatus(statusCode: string): boolean {\n return statusCode.toLowerCase() === 'canceled';\n }\n}\n","export const applePayVersion = 3;\nexport const safariVersionForIframeIntegration = 17;\n","import { FieldNames } from './payment/field-names.enum';\n\nexport const agreementsGroup = [\n FieldNames.termsAndConditions,\n FieldNames.termsAndConditionsHtcEula,\n FieldNames.termsAndConditionsAtariTc,\n FieldNames.termsAndConditionsAtariPp,\n FieldNames.termsAndConditionsRolandEula,\n FieldNames.termsAndConditionsRobloxEula,\n FieldNames.termsAndConditionsOnzenga,\n FieldNames.take2Taxes,\n FieldNames.rockstarTaxes,\n FieldNames.omnibusDirective,\n];\n","export enum ApplePayErrors {\n paymentError = 'paymentError',\n deviceIsNotCapableError = 'deviceIsNotCapableError',\n}\n","import { ApplePay, applePay, client } from 'braintree-web';\nimport { Observable, Subject } from 'rxjs';\nimport { Inject, Injectable } from '@angular/core';\nimport {\n applePayVersion,\n safariVersionForIframeIntegration,\n} from './apple-pay.const';\nimport { agreementsGroup } from '../../agreementsGroup.const';\nimport { ApplePayParams } from './apple-pay-params.interface';\nimport { Field } from '../../payment/field.interface';\nimport { ExtendedWindow } from '../../extended-window.interface';\nimport { windowToken } from '../../window.token';\nimport { XpsResponse } from '../../payment/xps-response.interface';\nimport { FieldNames } from '../../payment/field-names.enum';\nimport { ApplePayErrors } from './apple-pay.errors.enum';\nimport { UserAgentService } from '../../user-agent/user-agent.service';\nimport { ApplePayIntegration } from './apple-pay-integration.type';\nimport { pagesRoutes } from '../../payment/actions/redirect/ps4-pages/pages-routes.const';\nimport { applePayId } from '../../payment/actions/redirect/ps4-pages/pages-payment-methods-id.const';\nimport { InitializeResponse } from '../../payment/initialize/response/initialize-response.class';\nimport { SummaryFinanceDetailsAdapterService } from '../../payment/finance-details/summary/summary-finance-details-adapter.service';\nimport {\n payStation4Url,\n sandboxPayStationUrl,\n} from '../../payment/actions/redirect/pay-station4-url.const';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApplePayService {\n private readonly agreementFieldsNames: string[] = agreementsGroup;\n private readonly payment: Subject<string> = new Subject();\n private readonly error: Subject<ApplePayErrors> = new Subject();\n private readonly integrationType: Subject<ApplePayIntegration> =\n new Subject();\n\n private paymentClient: ApplePay | null = null;\n\n private readonly api: Promise<{\n applePay: typeof applePay;\n client: typeof client;\n }>;\n private applePayParams: ApplePayParams | null = null;\n private order?: string | null = null;\n\n public get paymentParameters(): ApplePayParams | null {\n return this.applePayParams;\n }\n\n public get payment$(): Observable<string> {\n return this.payment.asObservable();\n }\n\n public get error$(): Observable<ApplePayErrors> {\n return this.error.asObservable();\n }\n\n public get integrationType$(): Observable<ApplePayIntegration> {\n return this.integrationType.asObservable();\n }\n\n public constructor(\n @Inject(windowToken) private readonly window: ExtendedWindow,\n private readonly userAgentService: UserAgentService,\n private readonly summaryFinanceDetailsAdapterService: SummaryFinanceDetailsAdapterService\n ) {\n this.api = this.loadBraintree();\n }\n\n public setApplePayParams(data: unknown): void {\n const formFields = (data as InitializeResponse)?.paymentForm?.fields;\n const summary = (data as InitializeResponse)?.paymentForm?.summary;\n\n if (!formFields || !summary) {\n return;\n }\n const fields = formFields.reduce(\n (acc: { [key: string]: string }, field) => {\n if (\n this.agreementFieldsNames.includes(field.name) &&\n field.isVisible === '1'\n ) {\n acc[field.name] = field.title;\n } else {\n acc[field.name] = field.value;\n }\n\n return acc;\n },\n {}\n );\n\n const agreements = this.agreementFieldsNames\n .map((fieldName) => fields[fieldName as keyof typeof fields] as string)\n .filter(Boolean);\n\n this.applePayParams = {\n tokenKey: this.getAppleToken(formFields),\n totalLabel: fields['label_applePay'] ?? '',\n totalAmount: this.getTotalAmount(summary),\n currencyCode: this.getTotalCurrency(summary),\n countryCode: fields['countryCode'] ?? '',\n merchantCapabilities: this.getJsonValueFromField(\n fields,\n 'merchantCapabilities'\n ),\n supportedNetworks: this.getJsonValueFromField(\n fields,\n 'supportedNetworks'\n ),\n agreements: agreements,\n };\n }\n\n public async initLibrary(tokenKey: string): Promise<void> {\n try {\n const api = await this.api;\n const clientInstance = await api.client.create({\n authorization: tokenKey,\n });\n\n this.paymentClient = await api.applePay.create({\n client: clientInstance,\n });\n } catch (error: unknown) {\n console.error('apple pay: initialize failed', error);\n }\n\n this.emitIntegrationType();\n\n if (!this.paymentClient || !this.isDeviceCapable()) {\n this.emitError(ApplePayErrors.deviceIsNotCapableError);\n }\n }\n\n public redirectToPaymentPage(\n parameters: ApplePayParams,\n token: string,\n isSandbox?: boolean\n ): string | undefined {\n const route = pagesRoutes.get(applePayId);\n if (!route) {\n return;\n }\n\n const query = new URLSearchParams({\n ...parameters,\n merchantCapabilities: JSON.stringify(parameters.merchantCapabilities),\n supportedNetworks: JSON.stringify(parameters.supportedNetworks),\n token,\n agreements: JSON.stringify(parameters.agreements),\n });\n\n if (this.order) {\n query.append('order', this.order);\n }\n\n const payStationUrl = isSandbox ? sandboxPayStationUrl : payStation4Url;\n return `${payStationUrl}/en${route}?${query.toString()}`;\n }\n\n public setOrder(data: unknown): void {\n const summary = (data as InitializeResponse)?.paymentForm?.summary;\n if (!summary) {\n return;\n }\n const financeDetails =\n this.summaryFinanceDetailsAdapterService.getFinanceDetails(summary);\n\n if (financeDetails?.purchase && financeDetails?.finance) {\n const cartItems = financeDetails.cartItems;\n this.order = cartItems?.reduce((curr, item) => {\n if (curr) {\n return curr + `; ${item.title}`;\n }\n\n return curr + item.title;\n }, '');\n }\n }\n\n public proceedCheckout(parameters?: ApplePayParams): void {\n if (!parameters) {\n return;\n }\n\n if (!this.paymentClient || !this.isDeviceCapable()) {\n console.warn('apple pay: device is not capable', this.paymentClient);\n this.emitError(ApplePayErrors.deviceIsNotCapableError);\n return;\n }\n\n try {\n const paymentRequest = this.paymentClient.createPaymentRequest({\n total: {\n label: parameters.totalLabel,\n amount: parameters.totalAmount,\n },\n currencyCode: parameters.currencyCode,\n countryCode: parameters.countryCode,\n merchantCapabilities: parameters.merchantCapabilities,\n supportedNetworks: parameters.supportedNetworks,\n });\n\n const session = new this.window.ApplePaySession(\n applePayVersion,\n paymentRequest\n );\n\n session.onvalidatemerchant = (event: { validationURL: string }) => {\n console.info('apple pay: merchant validation', event);\n this.paymentClient\n ?.performValidation({\n validationURL: event.validationURL,\n displayName: parameters?.totalLabel,\n })\n .then((merchantSession) => {\n session.completeMerchantValidation(merchantSession);\n })\n .catch((error) => {\n console.error('apple pay: merchant validation error', error);\n this.emitError(ApplePayErrors.paymentError);\n session.abort();\n });\n };\n\n session.onpaymentauthorized = (event: { payment: { token: string } }) => {\n console.info('apple pay: payment authorization', event);\n this.paymentClient\n ?.tokenize({\n token: event.payment.token,\n })\n .then((authorizationResponse) => {\n this.payment.next(authorizationResponse?.nonce ?? '');\n session.completePayment(this.window.ApplePaySession.STATUS_SUCCESS);\n })\n .catch((error) => {\n console.error('apple pay: payment authorization error', error);\n this.emitError(ApplePayErrors.paymentError);\n session.completePayment(this.window.ApplePaySession.STATUS_FAILURE);\n });\n };\n\n session.oncancel = (event: unknown) => {\n this.emitError(ApplePayErrors.paymentError);\n console.error('apple pay: user cancel payment', event);\n };\n\n session.begin();\n } catch (error: unknown) {\n console.error('apple pay: checkout error', error);\n this.emitError(ApplePayErrors.paymentError);\n }\n }\n\n public isDeviceCapable(): boolean {\n try {\n return Boolean(\n this.window.ApplePaySession?.supportsVersion(applePayVersion) &&\n this.window.ApplePaySession?.canMakePayments()\n );\n } catch (error: unknown) {\n return false;\n }\n }\n\n public getTokenNonceFieldData(tokenNonce: string): {\n name: string;\n value: string;\n } {\n const name = FieldNames.tokenApplePay;\n const value = btoa(tokenNonce);\n return { name, value };\n }\n\n public updateApplePayParams(data: unknown): void {\n const summary = (data as XpsResponse)?.summary;\n if (!this.applePayParams || !summary) {\n return;\n }\n\n this.applePayParams.totalAmount = this.getTotalAmount(summary);\n this.applePayParams.currencyCode = this.getTotalCurrency(summary);\n }\n\n private async loadBraintree(): Promise<{\n applePay: typeof applePay;\n client: typeof client;\n }> {\n const api = await import('braintree-web');\n\n return api;\n }\n\n private getAppleToken(formFields: Field[]): string {\n const appleTokenField = formFields.find((field) => {\n return field.name === 'token_key';\n });\n\n if (!appleTokenField) {\n return '';\n }\n\n return appleTokenField.value;\n }\n\n private getTotalAmount(summary: XpsResponse['summary']): string {\n const finance = summary?.finance;\n const total = finance?.grand_total?.amount ?? finance?.total.amount;\n\n return total?.toString() ?? '';\n }\n\n private getTotalCurrency(summary: XpsResponse['summary']): string {\n const finance = summary?.finance;\n return finance?.grand_total?.currency ?? finance?.total?.currency ?? '';\n }\n\n private getJsonValueFromField(\n fields: {\n [key: string]: string;\n },\n fieldName: string\n ): string[] | undefined {\n const field = fields[fieldName];\n\n try {\n return field ? (JSON.parse(field) as string[]) : undefined;\n } catch (error: unknown) {\n return undefined;\n }\n }\n\n private emitError(error: ApplePayErrors): void {\n this.error.next(error);\n }\n\n private emitIntegrationType(): void {\n let integrationType: ApplePayIntegration;\n\n if (this.paymentClient && this.isDeviceCapable()) {\n integrationType = 'redirect';\n } else {\n integrationType = 'none';\n }\n\n this.integrationType.next(integrationType);\n }\n\n private canUseSdk(): boolean {\n return !!(\n this.userAgentService.safariVersion &&\n this.userAgentService.safariVersion >= safariVersionForIframeIntegration\n );\n }\n}\n","/*\n * Public API Surface of core-library\n */\n\nexport * from './lib/core-library.service';\nexport * from './lib/core-library.module';\nexport * from './lib/core/legal/legal.component.config';\n\nexport * from './lib/core/sdk-payment-systems/payment-systems/payment-system-processing.service';\nexport * from './lib/core/sdk-payment-systems/google-pay/google-pay.service';\n\nexport * from './lib/core/sdk-payment-systems/apple-pay/apple-pay.service';\nexport * from './lib/core/sdk-payment-systems/apple-pay/apple-pay-params.interface';\n\nexport * from './lib/core/user-behaviour-analytics/user-behaviour-event/user-behaviour-event-types';\nexport * from './lib/core/payment/form/control-status.interface';\nexport * from './lib/core/payment/field-names.enum';\n\nexport * from './lib/core/credit-card/credit-card-types.enum';\nexport * from './lib/core/countries-api/country-response.interface';\n\nexport * from './lib/core/sdk-payment-systems/google-pay/google-pay-button-color.type';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SecureApiClient","i1.SettingsService","i2.CountryService","i3.SecureApiClient","i2.SecureApiClient","i1.UrlService","i2.SettingsService","i3.CountryService","i4.UserAgentService","i1.ShowErrorsActionCreator","i1.UnescapeHtmlPipe","i1.CreditCardService","i2.EventBuilderService","i3.SettingsService","i1.XpsApiService","i4.NextActionService","i5.XpsResponseErrorsMappingService","i6.EncryptCreditCardService","i7.ShowErrorsActionCreator","i8.UserBehaviourAnalyticsService","i2.DeviceFingerPrintService","i3.XpsApiService","i4.XpsResponseErrorsMappingService","i5.EncryptCreditCardService","i6.UserBehaviourAnalyticsService","i2.NextActionService","i6.ShowErrorsActionCreator","i7.UserBehaviourAnalyticsService","i1.SyncService","i2.CreditCardMinLengthValidator","sendErrMessage","i1.ControlConfigService","i1.SummaryFinanceDetailsAdapterService","i1.SessionService","i2.SummaryFinanceDetailsAdapterService","i3.StatusFinanceDetailsAdapterService","i3.XpsResponseErrorsMappingService","map","i2","i1.ElkLoggerService","i1.NchanWebSocketService","i2.CentrifugoWebSocketService","i1.WebSocketFactory","filter","i1.StatusRequestService","i2.CheckStatusService","i3.WebsocketStatusService","i4.UserBehaviourAnalyticsService","i2.ListenStatusService","i3.SavedPaymentAccountChangesService","i5.CheckStatusService","i6.StatusUpdatedActionCreator","i2.StatusRequestService","i3.FinanceDetailsService","i4.ListenStatusService","i5.NextActionService","i6.SavePaymentMethodStatusService","i7.StatusUpdatedActionCreator","i1.NotifyDfpStatusService","i1.StatusThreeDsService","i2.NotifyDfpStatusService","i3.WebSocketFactory","i4.DfpCollectService","i5.ReinsuranceCheckService","i1.ThreeDs20Service","i3.CheckStatusActionCreator","i4.ThreeDsActionCreator","i1.InitializeService","i2.SubmitService","i3.SyncService","i4.FormService","i5.StatusService","i6.FinanceDetailsService","i7.CreditCardStateService","i8.NextActionService","i9.ControlConfigService","i10.ThreeDsService","i11.FormMessagesService","i12.SettingsService","i13.CountryService","i14.CheckStatusActionCreator","i2.RefundPolicyService","i3.SecureConnectionService","i4.DisclaimerService","i1.SavedMethodsService","i1.PaymentMethodsService","i2.SavedMethodsService","i3.PaymentMethodsService","i4.SavedMethodsService","i5.UserBalanceService","i6.PaymentConfigService","i7.PaymentService","i8.DeviceFingerPrintService","i9.FinanceDetailsService","i10.LegalService","i11.StatusService","i12.NextActionService","i13.CreditCardService","i14.CreditCardStateService","i15.FormMessagesService","i16.EditSavedMethodsService","i17.UserBehaviourAnalyticsService","i18.PerformanceService","i19.CombinedPaymentMethodsService","i20.CountriesApiService","i1","i1.PaymentSystemProcessingService","i1.UserAgentService"],"mappings":"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"}