@xsolla/payment-client-core 0.2.21 → 0.2.23

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/{esm2020 → esm2022}/lib/core/combined-payment-methods/combined-payment-methods.service.mjs +5 -5
  2. package/{esm2020 → esm2022}/lib/core/countries-api/countries-api.service.mjs +5 -5
  3. package/{esm2020 → esm2022}/lib/core/country/country.service.mjs +5 -5
  4. package/{esm2020 → esm2022}/lib/core/credit-card/credit-card.service.mjs +4 -4
  5. package/esm2022/lib/core/device-finger-print/device-finger-print.service.mjs +67 -0
  6. package/{esm2020 → esm2022}/lib/core/edit-saved-methods/edit-saved-methods.service.mjs +5 -5
  7. package/esm2022/lib/core/encrypt-credit-card/encrypt-credit-card.service.mjs +73 -0
  8. package/esm2022/lib/core/errors-mapping/xps-response-errors-mapping.service.mjs +52 -0
  9. package/esm2022/lib/core/exceptions-handling/elk/elk-logger.service.mjs +120 -0
  10. package/esm2022/lib/core/exceptions-handling/errors/http-error.class.mjs +40 -0
  11. package/esm2022/lib/core/exceptions-handling/errors/tagged-error.class.mjs +16 -0
  12. package/{esm2020 → esm2022}/lib/core/exceptions-handling/http-interceptor/http-exceptions.interceptor.mjs +5 -5
  13. package/esm2022/lib/core/http/secure-api/secure-api.service.mjs +55 -0
  14. package/{esm2020 → esm2022}/lib/core/legal/disclaimer.service.mjs +4 -4
  15. package/{esm2020 → esm2022}/lib/core/legal/legal.service.mjs +5 -5
  16. package/esm2022/lib/core/legal/refund-policy.service.mjs +30 -0
  17. package/esm2022/lib/core/legal/secure-connection.service.mjs +31 -0
  18. package/{esm2020 → esm2022}/lib/core/payment/actions/check-status/check-status.action.class.mjs +4 -4
  19. package/esm2022/lib/core/payment/actions/next-action.service.mjs +61 -0
  20. package/esm2022/lib/core/payment/actions/redirect/redirect.action.class.mjs +60 -0
  21. package/{esm2020 → esm2022}/lib/core/payment/actions/show-errors/show-errors.action.class.mjs +4 -4
  22. package/{esm2020 → esm2022}/lib/core/payment/actions/show-fields/show-fields.action.class.mjs +4 -4
  23. package/{esm2020 → esm2022}/lib/core/payment/actions/show-mobile-payment-screen/show-mobile-payment-screen.action.class.mjs +4 -4
  24. package/esm2022/lib/core/payment/actions/show-qr-code/show-qr-code.action.class.mjs +27 -0
  25. package/{esm2020 → esm2022}/lib/core/payment/actions/show-qr-code/show-qr-code.action.type.mjs +1 -1
  26. package/{esm2020 → esm2022}/lib/core/payment/actions/special-button/special-button.action.class.mjs +4 -4
  27. package/esm2022/lib/core/payment/actions/status-updated/status-updated.action.class.mjs +38 -0
  28. package/{esm2020 → esm2022}/lib/core/payment/actions/three-ds/three-ds.action.class.mjs +4 -4
  29. package/esm2022/lib/core/payment/config/config.service.mjs +37 -0
  30. package/{esm2020 → esm2022}/lib/core/payment/credit-card-state/credit-card-state.service.mjs +4 -4
  31. package/esm2022/lib/core/payment/finance-details/finance-details.service.mjs +38 -0
  32. package/{esm2020 → esm2022}/lib/core/payment/finance-details/status/status-finance-details-adapter.service.mjs +5 -5
  33. package/esm2022/lib/core/payment/finance-details/summary/summary-finance-details-adapter.service.mjs +264 -0
  34. package/esm2022/lib/core/payment/form/controls/control-config.service.mjs +46 -0
  35. package/{esm2020 → esm2022}/lib/core/payment/form/converters/birth-date/birth-date.converter.mjs +5 -5
  36. package/{esm2020 → esm2022}/lib/core/payment/form/converters/card-month/card-month.converter.mjs +5 -5
  37. package/{esm2020 → esm2022}/lib/core/payment/form/converters/card-number/card-number.converter.mjs +5 -5
  38. package/{esm2020 → esm2022}/lib/core/payment/form/converters/card-year/card-year.converter.mjs +5 -5
  39. package/{esm2020 → esm2022}/lib/core/payment/form/converters/cardholder-name/cardholder-name.converter.mjs +5 -5
  40. package/esm2022/lib/core/payment/form/converters/checkbox/checkbox.converter.mjs +33 -0
  41. package/esm2022/lib/core/payment/form/converters/converter.abstract.mjs +76 -0
  42. package/{esm2020 → esm2022}/lib/core/payment/form/converters/coupon/coupon.converter.mjs +5 -5
  43. package/{esm2020 → esm2022}/lib/core/payment/form/converters/cpf-name/cpf-name.converter.mjs +5 -5
  44. package/{esm2020 → esm2022}/lib/core/payment/form/converters/cpf-number/cpf-number.converter.mjs +5 -5
  45. package/esm2022/lib/core/payment/form/converters/cvv/cvv.converter.mjs +72 -0
  46. package/{esm2020 → esm2022}/lib/core/payment/form/converters/email/email.converter.mjs +5 -5
  47. package/{esm2020 → esm2022}/lib/core/payment/form/converters/phone.converter.mjs +5 -5
  48. package/{esm2020 → esm2022}/lib/core/payment/form/converters/pin/pin.converter.mjs +5 -5
  49. package/{esm2020 → esm2022}/lib/core/payment/form/converters/pricepoint/pricepoint.converter.mjs +5 -5
  50. package/{esm2020 → esm2022}/lib/core/payment/form/converters/radio-group/radio-group.converter.mjs +5 -5
  51. package/{esm2020 → esm2022}/lib/core/payment/form/converters/select/select.converter.mjs +5 -5
  52. package/esm2022/lib/core/payment/form/converters/street-number/street-number.converter.mjs +28 -0
  53. package/{esm2020 → esm2022}/lib/core/payment/form/converters/text/text.converter.mjs +5 -5
  54. package/esm2022/lib/core/payment/form/converters/zip/zip.converter.mjs +64 -0
  55. package/{esm2020 → esm2022}/lib/core/payment/form/form.module.mjs +33 -33
  56. package/esm2022/lib/core/payment/form/form.service.mjs +49 -0
  57. package/esm2022/lib/core/payment/form/validators/birth-date/birth-date.validator.mjs +37 -0
  58. package/esm2022/lib/core/payment/form/validators/card-month/card-month.validator.mjs +37 -0
  59. package/esm2022/lib/core/payment/form/validators/card-year/card-year.validator.mjs +34 -0
  60. package/esm2022/lib/core/payment/form/validators/convert.function.mjs +15 -0
  61. package/esm2022/lib/core/payment/form/validators/credit-card-length/credit-card-min-length.validator.mjs +32 -0
  62. package/esm2022/lib/core/payment/form/validators/luhn-formula-validator/luhn-formula.validator.mjs +40 -0
  63. package/{esm2020 → esm2022}/lib/core/payment/form/validators/validators.module.mjs +5 -5
  64. package/{esm2020 → esm2022}/lib/core/payment/form-messages/form-messages.service.mjs +5 -5
  65. package/esm2022/lib/core/payment/initialize/initialize.service.mjs +85 -0
  66. package/esm2022/lib/core/payment/initialize/response/initialize-response.class.mjs +43 -0
  67. package/esm2022/lib/core/payment/payment.service.mjs +369 -0
  68. package/{esm2020 → esm2022}/lib/core/payment/status/check-status/check-status.service.mjs +6 -6
  69. package/{esm2020 → esm2022}/lib/core/payment/status/check-status/request/check-status-request.class.mjs +1 -1
  70. package/esm2022/lib/core/payment/status/listen-status/listen-status.service.mjs +124 -0
  71. package/{esm2020 → esm2022}/lib/core/payment/status/save-payment-method-status/api/saved-payment-account-changes.service.mjs +5 -5
  72. package/esm2022/lib/core/payment/status/save-payment-method-status/save-payment-method-status.service.mjs +121 -0
  73. package/esm2022/lib/core/payment/status/status-request/request/status-request.class.mjs +22 -0
  74. package/esm2022/lib/core/payment/status/status-request/response/status-response.class.mjs +98 -0
  75. package/{esm2020 → esm2022}/lib/core/payment/status/status-request/status-request.service.mjs +6 -6
  76. package/esm2022/lib/core/payment/status/status.service.mjs +75 -0
  77. package/esm2022/lib/core/payment/status/websocket-status/websocket-status.service.mjs +76 -0
  78. package/esm2022/lib/core/payment/submit/request/submit-request.class.mjs +24 -0
  79. package/esm2022/lib/core/payment/submit/response/submit-response.class.mjs +31 -0
  80. package/esm2022/lib/core/payment/submit/submit.service.mjs +78 -0
  81. package/esm2022/lib/core/payment/sync/request/sync-request.class.mjs +31 -0
  82. package/esm2022/lib/core/payment/sync/response/sync-response.class.mjs +17 -0
  83. package/esm2022/lib/core/payment/sync/sync.service.mjs +157 -0
  84. package/esm2022/lib/core/payment/three-ds/api/notify-dfp-status/notify-dfp-status.service.mjs +49 -0
  85. package/esm2022/lib/core/payment/three-ds/api/status-three-ds/status-three-ds.service.mjs +60 -0
  86. package/esm2022/lib/core/payment/three-ds/dfp-collect/dfp-collect.service.mjs +105 -0
  87. package/esm2022/lib/core/payment/three-ds/reinsurance-check/reinsurance-check.service.mjs +41 -0
  88. package/esm2022/lib/core/payment/three-ds/three-ds-20/three-ds20.service.mjs +109 -0
  89. package/esm2022/lib/core/payment/three-ds/three-ds.service.mjs +42 -0
  90. package/esm2022/lib/core/payment/xps-api/xps-api.service.mjs +85 -0
  91. package/esm2022/lib/core/payment/xps-api-part-request.abstract.mjs +8 -0
  92. package/esm2022/lib/core/payment-methods/payment-methods.service.mjs +75 -0
  93. package/esm2022/lib/core/performance/performance.service.mjs +111 -0
  94. package/esm2022/lib/core/performance/xhr-action.service.mjs +114 -0
  95. package/esm2022/lib/core/saved-methods/saved-methods.service.mjs +54 -0
  96. package/esm2022/lib/core/sdk-payment-systems/apple-pay/apple-pay.service.mjs +268 -0
  97. package/esm2022/lib/core/sdk-payment-systems/google-pay/google-pay.service.mjs +177 -0
  98. package/esm2022/lib/core/sdk-payment-systems/payment-systems/payment-system-processing.service.mjs +84 -0
  99. package/esm2022/lib/core/session/session.service.mjs +57 -0
  100. package/esm2022/lib/core/settings/settings.service.mjs +92 -0
  101. package/esm2022/lib/core/url/url.service.mjs +34 -0
  102. package/esm2022/lib/core/user-agent/user-agent.service.mjs +211 -0
  103. package/esm2022/lib/core/user-balance/user-balance.service.mjs +53 -0
  104. package/esm2022/lib/core/user-behaviour-analytics/event-builder/event-builder.service.mjs +144 -0
  105. package/esm2022/lib/core/user-behaviour-analytics/user-behaviour-analytics.service.mjs +158 -0
  106. package/esm2022/lib/core/web-socket/centrifugo-web-socket.service.mjs +200 -0
  107. package/esm2022/lib/core/web-socket/nchan-web-socket.service.mjs +116 -0
  108. package/esm2022/lib/core/web-socket/web-socket.factory.mjs +28 -0
  109. package/esm2022/lib/core-library.module.mjs +92 -0
  110. package/{esm2020 → esm2022}/lib/core-library.service.mjs +5 -5
  111. package/{esm2020 → esm2022}/lib/shared/pipes/pipes.module.mjs +5 -5
  112. package/esm2022/lib/shared/pipes/unescape-html/unescape-html.pipe.mjs +23 -0
  113. package/{fesm2020 → fesm2022}/xsolla-payment-client-core.mjs +458 -455
  114. package/fesm2022/xsolla-payment-client-core.mjs.map +1 -0
  115. package/lib/core/payment/actions/show-qr-code/show-qr-code.action.type.d.ts +2 -0
  116. package/package.json +10 -16
  117. package/xsolla-payment-client-core-0.2.23.tgz +0 -0
  118. package/esm2020/lib/core/device-finger-print/device-finger-print.service.mjs +0 -67
  119. package/esm2020/lib/core/encrypt-credit-card/encrypt-credit-card.service.mjs +0 -72
  120. package/esm2020/lib/core/errors-mapping/xps-response-errors-mapping.service.mjs +0 -52
  121. package/esm2020/lib/core/exceptions-handling/elk/elk-logger.service.mjs +0 -120
  122. package/esm2020/lib/core/exceptions-handling/errors/http-error.class.mjs +0 -40
  123. package/esm2020/lib/core/exceptions-handling/errors/tagged-error.class.mjs +0 -16
  124. package/esm2020/lib/core/http/secure-api/secure-api.service.mjs +0 -55
  125. package/esm2020/lib/core/legal/refund-policy.service.mjs +0 -30
  126. package/esm2020/lib/core/legal/secure-connection.service.mjs +0 -31
  127. package/esm2020/lib/core/payment/actions/next-action.service.mjs +0 -61
  128. package/esm2020/lib/core/payment/actions/redirect/redirect.action.class.mjs +0 -60
  129. package/esm2020/lib/core/payment/actions/show-qr-code/show-qr-code.action.class.mjs +0 -25
  130. package/esm2020/lib/core/payment/actions/status-updated/status-updated.action.class.mjs +0 -38
  131. package/esm2020/lib/core/payment/config/config.service.mjs +0 -37
  132. package/esm2020/lib/core/payment/finance-details/finance-details.service.mjs +0 -38
  133. package/esm2020/lib/core/payment/finance-details/summary/summary-finance-details-adapter.service.mjs +0 -264
  134. package/esm2020/lib/core/payment/form/controls/control-config.service.mjs +0 -46
  135. package/esm2020/lib/core/payment/form/converters/checkbox/checkbox.converter.mjs +0 -33
  136. package/esm2020/lib/core/payment/form/converters/converter.abstract.mjs +0 -76
  137. package/esm2020/lib/core/payment/form/converters/cvv/cvv.converter.mjs +0 -72
  138. package/esm2020/lib/core/payment/form/converters/street-number/street-number.converter.mjs +0 -28
  139. package/esm2020/lib/core/payment/form/converters/zip/zip.converter.mjs +0 -64
  140. package/esm2020/lib/core/payment/form/form.service.mjs +0 -49
  141. package/esm2020/lib/core/payment/form/validators/birth-date/birth-date.validator.mjs +0 -37
  142. package/esm2020/lib/core/payment/form/validators/card-month/card-month.validator.mjs +0 -37
  143. package/esm2020/lib/core/payment/form/validators/card-year/card-year.validator.mjs +0 -34
  144. package/esm2020/lib/core/payment/form/validators/convert.function.mjs +0 -15
  145. package/esm2020/lib/core/payment/form/validators/credit-card-length/credit-card-min-length.validator.mjs +0 -32
  146. package/esm2020/lib/core/payment/form/validators/luhn-formula-validator/luhn-formula.validator.mjs +0 -40
  147. package/esm2020/lib/core/payment/initialize/initialize.service.mjs +0 -85
  148. package/esm2020/lib/core/payment/initialize/response/initialize-response.class.mjs +0 -43
  149. package/esm2020/lib/core/payment/payment.service.mjs +0 -369
  150. package/esm2020/lib/core/payment/status/listen-status/listen-status.service.mjs +0 -124
  151. package/esm2020/lib/core/payment/status/save-payment-method-status/save-payment-method-status.service.mjs +0 -121
  152. package/esm2020/lib/core/payment/status/status-request/request/status-request.class.mjs +0 -22
  153. package/esm2020/lib/core/payment/status/status-request/response/status-response.class.mjs +0 -98
  154. package/esm2020/lib/core/payment/status/status.service.mjs +0 -75
  155. package/esm2020/lib/core/payment/status/websocket-status/websocket-status.service.mjs +0 -76
  156. package/esm2020/lib/core/payment/submit/request/submit-request.class.mjs +0 -24
  157. package/esm2020/lib/core/payment/submit/response/submit-response.class.mjs +0 -31
  158. package/esm2020/lib/core/payment/submit/submit.service.mjs +0 -78
  159. package/esm2020/lib/core/payment/sync/request/sync-request.class.mjs +0 -31
  160. package/esm2020/lib/core/payment/sync/response/sync-response.class.mjs +0 -17
  161. package/esm2020/lib/core/payment/sync/sync.service.mjs +0 -157
  162. package/esm2020/lib/core/payment/three-ds/api/notify-dfp-status/notify-dfp-status.service.mjs +0 -49
  163. package/esm2020/lib/core/payment/three-ds/api/status-three-ds/status-three-ds.service.mjs +0 -60
  164. package/esm2020/lib/core/payment/three-ds/dfp-collect/dfp-collect.service.mjs +0 -105
  165. package/esm2020/lib/core/payment/three-ds/reinsurance-check/reinsurance-check.service.mjs +0 -41
  166. package/esm2020/lib/core/payment/three-ds/three-ds-20/three-ds20.service.mjs +0 -109
  167. package/esm2020/lib/core/payment/three-ds/three-ds.service.mjs +0 -42
  168. package/esm2020/lib/core/payment/xps-api/xps-api.service.mjs +0 -85
  169. package/esm2020/lib/core/payment/xps-api-part-request.abstract.mjs +0 -8
  170. package/esm2020/lib/core/payment-methods/payment-methods.service.mjs +0 -75
  171. package/esm2020/lib/core/performance/performance.service.mjs +0 -111
  172. package/esm2020/lib/core/performance/xhr-action.service.mjs +0 -114
  173. package/esm2020/lib/core/saved-methods/saved-methods.service.mjs +0 -54
  174. package/esm2020/lib/core/sdk-payment-systems/apple-pay/apple-pay.service.mjs +0 -268
  175. package/esm2020/lib/core/sdk-payment-systems/google-pay/google-pay.service.mjs +0 -177
  176. package/esm2020/lib/core/sdk-payment-systems/payment-systems/payment-system-processing.service.mjs +0 -84
  177. package/esm2020/lib/core/session/session.service.mjs +0 -57
  178. package/esm2020/lib/core/settings/settings.service.mjs +0 -92
  179. package/esm2020/lib/core/url/url.service.mjs +0 -34
  180. package/esm2020/lib/core/user-agent/user-agent.service.mjs +0 -211
  181. package/esm2020/lib/core/user-balance/user-balance.service.mjs +0 -53
  182. package/esm2020/lib/core/user-behaviour-analytics/event-builder/event-builder.service.mjs +0 -144
  183. package/esm2020/lib/core/user-behaviour-analytics/user-behaviour-analytics.service.mjs +0 -158
  184. package/esm2020/lib/core/web-socket/centrifugo-web-socket.service.mjs +0 -200
  185. package/esm2020/lib/core/web-socket/nchan-web-socket.service.mjs +0 -116
  186. package/esm2020/lib/core/web-socket/web-socket.factory.mjs +0 -28
  187. package/esm2020/lib/core-library.module.mjs +0 -92
  188. package/esm2020/lib/shared/pipes/unescape-html/unescape-html.pipe.mjs +0 -23
  189. package/fesm2015/xsolla-payment-client-core.mjs +0 -8138
  190. package/fesm2015/xsolla-payment-client-core.mjs.map +0 -1
  191. package/fesm2020/xsolla-payment-client-core.mjs.map +0 -1
  192. package/xsolla-payment-client-core-0.2.21.tgz +0 -0
  193. /package/{esm2020 → esm2022}/lib/core/agreementsGroup.const.mjs +0 -0
  194. /package/{esm2020 → esm2022}/lib/core/boolean-number.enum.mjs +0 -0
  195. /package/{esm2020 → esm2022}/lib/core/combined-payment-methods/combined-payment-methods.interface.mjs +0 -0
  196. /package/{esm2020 → esm2022}/lib/core/countries-api/country-response.interface.mjs +0 -0
  197. /package/{esm2020 → esm2022}/lib/core/countries-api/country.interface.mjs +0 -0
  198. /package/{esm2020 → esm2022}/lib/core/country/country-iso-code.enum.mjs +0 -0
  199. /package/{esm2020 → esm2022}/lib/core/credit-card/credit-card-settings.interface.mjs +0 -0
  200. /package/{esm2020 → esm2022}/lib/core/credit-card/credit-card-types.enum.mjs +0 -0
  201. /package/{esm2020 → esm2022}/lib/core/credit-card/credit-card.interface.mjs +0 -0
  202. /package/{esm2020 → esm2022}/lib/core/credit-card/credit-cards-map.const.mjs +0 -0
  203. /package/{esm2020 → esm2022}/lib/core/credit-card/default-mask.const.mjs +0 -0
  204. /package/{esm2020 → esm2022}/lib/core/credit-card/four-block-mask.const.mjs +0 -0
  205. /package/{esm2020 → esm2022}/lib/core/credit-card/ordered-cards-settings.const.mjs +0 -0
  206. /package/{esm2020 → esm2022}/lib/core/credit-card/types/american-express.mjs +0 -0
  207. /package/{esm2020 → esm2022}/lib/core/credit-card/types/aura.mjs +0 -0
  208. /package/{esm2020 → esm2022}/lib/core/credit-card/types/china-union-pay.mjs +0 -0
  209. /package/{esm2020 → esm2022}/lib/core/credit-card/types/dankort.mjs +0 -0
  210. /package/{esm2020 → esm2022}/lib/core/credit-card/types/default-card.mjs +0 -0
  211. /package/{esm2020 → esm2022}/lib/core/credit-card/types/diners-clubs.mjs +0 -0
  212. /package/{esm2020 → esm2022}/lib/core/credit-card/types/discover.mjs +0 -0
  213. /package/{esm2020 → esm2022}/lib/core/credit-card/types/elo.mjs +0 -0
  214. /package/{esm2020 → esm2022}/lib/core/credit-card/types/hipercard.mjs +0 -0
  215. /package/{esm2020 → esm2022}/lib/core/credit-card/types/jcb.mjs +0 -0
  216. /package/{esm2020 → esm2022}/lib/core/credit-card/types/maestro.mjs +0 -0
  217. /package/{esm2020 → esm2022}/lib/core/credit-card/types/mastercard.mjs +0 -0
  218. /package/{esm2020 → esm2022}/lib/core/credit-card/types/mir.mjs +0 -0
  219. /package/{esm2020 → esm2022}/lib/core/credit-card/types/naranja.mjs +0 -0
  220. /package/{esm2020 → esm2022}/lib/core/credit-card/types/postepay.mjs +0 -0
  221. /package/{esm2020 → esm2022}/lib/core/credit-card/types/visa.mjs +0 -0
  222. /package/{esm2020 → esm2022}/lib/core/deep-readonly.type.mjs +0 -0
  223. /package/{esm2020 → esm2022}/lib/core/device-finger-print/hash.type.mjs +0 -0
  224. /package/{esm2020 → esm2022}/lib/core/edit-saved-methods/delete-method-response.interface.mjs +0 -0
  225. /package/{esm2020 → esm2022}/lib/core/encrypt-credit-card/encrypted-card.interface.mjs +0 -0
  226. /package/{esm2020 → esm2022}/lib/core/encrypt-credit-card/open-card.interface.mjs +0 -0
  227. /package/{esm2020 → esm2022}/lib/core/errors-mapping/card-number-sanction-error-codes.const.mjs +0 -0
  228. /package/{esm2020 → esm2022}/lib/core/errors-mapping/field-special-errors-map.const.mjs +0 -0
  229. /package/{esm2020 → esm2022}/lib/core/exceptions-handling/elk/additional-info.interface.mjs +0 -0
  230. /package/{esm2020 → esm2022}/lib/core/exceptions-handling/elk/error-without-meta-fields.interface.mjs +0 -0
  231. /package/{esm2020 → esm2022}/lib/core/exceptions-handling/elk/log-message.interface.mjs +0 -0
  232. /package/{esm2020 → esm2022}/lib/core/exceptions-handling/errors/api-error.interface.mjs +0 -0
  233. /package/{esm2020 → esm2022}/lib/core/exceptions-handling/errors/app-error.class.mjs +0 -0
  234. /package/{esm2020 → esm2022}/lib/core/exceptions-handling/errors/elk-error-types.enum.mjs +0 -0
  235. /package/{esm2020 → esm2022}/lib/core/exceptions-handling/errors/encrypt-card-error.mjs +0 -0
  236. /package/{esm2020 → esm2022}/lib/core/exceptions-handling/errors/response-error.class.mjs +0 -0
  237. /package/{esm2020 → esm2022}/lib/core/exceptions-handling/errors/terminal-error.class.mjs +0 -0
  238. /package/{esm2020 → esm2022}/lib/core/exceptions-handling/errors/token-error.class.mjs +0 -0
  239. /package/{esm2020 → esm2022}/lib/core/exceptions-handling/errors/ws-error.class.mjs +0 -0
  240. /package/{esm2020 → esm2022}/lib/core/exceptions-handling/http-interceptor/http-error-data.interface.mjs +0 -0
  241. /package/{esm2020 → esm2022}/lib/core/exceptions-handling/http-interceptor/http-error-response-data.interface.mjs +0 -0
  242. /package/{esm2020 → esm2022}/lib/core/extended-window.interface.mjs +0 -0
  243. /package/{esm2020 → esm2022}/lib/core/http/secure-api/api-url.const.mjs +0 -0
  244. /package/{esm2020 → esm2022}/lib/core/http/secure-api/options.interface.mjs +0 -0
  245. /package/{esm2020 → esm2022}/lib/core/legal/legal.component.config.mjs +0 -0
  246. /package/{esm2020 → esm2022}/lib/core/payment/actions/action.interface.mjs +0 -0
  247. /package/{esm2020 → esm2022}/lib/core/payment/actions/check-status/check-status.action.type.mjs +0 -0
  248. /package/{esm2020 → esm2022}/lib/core/payment/actions/next-action.interface.mjs +0 -0
  249. /package/{esm2020 → esm2022}/lib/core/payment/actions/next-actions.mjs +0 -0
  250. /package/{esm2020 → esm2022}/lib/core/payment/actions/redirect/pay-station4-url.const.mjs +0 -0
  251. /package/{esm2020 → esm2022}/lib/core/payment/actions/redirect/ps4-pages/pages-payment-methods-id.const.mjs +0 -0
  252. /package/{esm2020 → esm2022}/lib/core/payment/actions/redirect/ps4-pages/pages-routes.const.mjs +0 -0
  253. /package/{esm2020 → esm2022}/lib/core/payment/actions/redirect/redirect.action.type.mjs +0 -0
  254. /package/{esm2020 → esm2022}/lib/core/payment/actions/show-errors/show-errors.action.type.mjs +0 -0
  255. /package/{esm2020 → esm2022}/lib/core/payment/actions/show-fields/show-fields.action.type.mjs +0 -0
  256. /package/{esm2020 → esm2022}/lib/core/payment/actions/show-mobile-payment-screen/show-mobile-payment-screen.action.type.mjs +0 -0
  257. /package/{esm2020 → esm2022}/lib/core/payment/actions/special-button/special-button.action.type.mjs +0 -0
  258. /package/{esm2020 → esm2022}/lib/core/payment/actions/status-updated/status-updated.action.type.mjs +0 -0
  259. /package/{esm2020 → esm2022}/lib/core/payment/actions/three-ds/three-ds.action.type.mjs +0 -0
  260. /package/{esm2020 → esm2022}/lib/core/payment/checkout-item.interface.mjs +0 -0
  261. /package/{esm2020 → esm2022}/lib/core/payment/credit-card-payment-methods-id.variable.mjs +0 -0
  262. /package/{esm2020 → esm2022}/lib/core/payment/credit-card-state/credit-card-state.interface.mjs +0 -0
  263. /package/{esm2020 → esm2022}/lib/core/payment/emit-data.service.abstract.mjs +0 -0
  264. /package/{esm2020 → esm2022}/lib/core/payment/field-names.enum.mjs +0 -0
  265. /package/{esm2020 → esm2022}/lib/core/payment/field.interface.mjs +0 -0
  266. /package/{esm2020 → esm2022}/lib/core/payment/finance-details/cart-item.interface.mjs +0 -0
  267. /package/{esm2020 → esm2022}/lib/core/payment/finance-details/cart-line.interface.mjs +0 -0
  268. /package/{esm2020 → esm2022}/lib/core/payment/finance-details/cart-summary.interface.mjs +0 -0
  269. /package/{esm2020 → esm2022}/lib/core/payment/finance-details/finance-details.interface.mjs +0 -0
  270. /package/{esm2020 → esm2022}/lib/core/payment/finance-details/price.helpers.mjs +0 -0
  271. /package/{esm2020 → esm2022}/lib/core/payment/finance-details/price.interface.mjs +0 -0
  272. /package/{esm2020 → esm2022}/lib/core/payment/finance-details/status/field-with-amount-and-currency.interface.mjs +0 -0
  273. /package/{esm2020 → esm2022}/lib/core/payment/finance-details/status/fields-with-currency.mjs +0 -0
  274. /package/{esm2020 → esm2022}/lib/core/payment/finance-details/status/finance-info.interface.mjs +0 -0
  275. /package/{esm2020 → esm2022}/lib/core/payment/finance-details/summary/default-image-patterns.const.mjs +0 -0
  276. /package/{esm2020 → esm2022}/lib/core/payment/finance-details/summary/sales-tax-details-key.enum.mjs +0 -0
  277. /package/{esm2020 → esm2022}/lib/core/payment/finance-details/vat-details-key.enum.mjs +0 -0
  278. /package/{esm2020 → esm2022}/lib/core/payment/form/common-control-config.interface.mjs +0 -0
  279. /package/{esm2020 → esm2022}/lib/core/payment/form/control-status.interface.mjs +0 -0
  280. /package/{esm2020 → esm2022}/lib/core/payment/form/controls/card-number/card-number-control.config.mjs +0 -0
  281. /package/{esm2020 → esm2022}/lib/core/payment/form/controls/checkbox/checkbox-control.config.mjs +0 -0
  282. /package/{esm2020 → esm2022}/lib/core/payment/form/controls/control-config.mjs +0 -0
  283. /package/{esm2020 → esm2022}/lib/core/payment/form/controls/control-type.type.mjs +0 -0
  284. /package/{esm2020 → esm2022}/lib/core/payment/form/controls/coupon/coupon-control.config.mjs +0 -0
  285. /package/{esm2020 → esm2022}/lib/core/payment/form/controls/phone-control.config.mjs +0 -0
  286. /package/{esm2020 → esm2022}/lib/core/payment/form/controls/radio-control/radio-control.config.mjs +0 -0
  287. /package/{esm2020 → esm2022}/lib/core/payment/form/controls/radio-control/radio-option.interface.mjs +0 -0
  288. /package/{esm2020 → esm2022}/lib/core/payment/form/controls/search-select/search-select-option.interface.mjs +0 -0
  289. /package/{esm2020 → esm2022}/lib/core/payment/form/controls/search-select/select-control.config.mjs +0 -0
  290. /package/{esm2020 → esm2022}/lib/core/payment/form/controls/search-select/select-option.interface.mjs +0 -0
  291. /package/{esm2020 → esm2022}/lib/core/payment/form/controls/text-control.config.mjs +0 -0
  292. /package/{esm2020 → esm2022}/lib/core/payment/form/converters/converters-map.interface.mjs +0 -0
  293. /package/{esm2020 → esm2022}/lib/core/payment/form/converters/converters-map.mjs +0 -0
  294. /package/{esm2020 → esm2022}/lib/core/payment/form/converters/cpf-name/cpf-name-regex.variable.mjs +0 -0
  295. /package/{esm2020 → esm2022}/lib/core/payment/form/converters/cvv/cvv-form-state.interface.mjs +0 -0
  296. /package/{esm2020 → esm2022}/lib/core/payment/form/converters/street-number/street-number-from-state.interface.mjs +0 -0
  297. /package/{esm2020 → esm2022}/lib/core/payment/form/field-form-states.interface.mjs +0 -0
  298. /package/{esm2020 → esm2022}/lib/core/payment/form/field-status.interface.mjs +0 -0
  299. /package/{esm2020 → esm2022}/lib/core/payment/form/form-fields-status.interface.mjs +0 -0
  300. /package/{esm2020 → esm2022}/lib/core/payment/form/form-state.interface.mjs +0 -0
  301. /package/{esm2020 → esm2022}/lib/core/payment/form/input-event.enum.mjs +0 -0
  302. /package/{esm2020 → esm2022}/lib/core/payment/form/validators/async-validator-fn.type.mjs +0 -0
  303. /package/{esm2020 → esm2022}/lib/core/payment/form/validators/coupon/coupon-validator.mjs +0 -0
  304. /package/{esm2020 → esm2022}/lib/core/payment/form/validators/email/email-validator.mjs +0 -0
  305. /package/{esm2020 → esm2022}/lib/core/payment/form/validators/is-empty-input-value.function.mjs +0 -0
  306. /package/{esm2020 → esm2022}/lib/core/payment/form/validators/max-length-validator.mjs +0 -0
  307. /package/{esm2020 → esm2022}/lib/core/payment/form/validators/min-length-validator.mjs +0 -0
  308. /package/{esm2020 → esm2022}/lib/core/payment/form/validators/phone-validator.mjs +0 -0
  309. /package/{esm2020 → esm2022}/lib/core/payment/form/validators/required/required.validator.mjs +0 -0
  310. /package/{esm2020 → esm2022}/lib/core/payment/form/validators/restricted-value/restricted-value.validator.mjs +0 -0
  311. /package/{esm2020 → esm2022}/lib/core/payment/form/validators/validation-error.interface.mjs +0 -0
  312. /package/{esm2020 → esm2022}/lib/core/payment/form/validators/validation-errors.interface.mjs +0 -0
  313. /package/{esm2020 → esm2022}/lib/core/payment/form/validators/validator-fn.type.mjs +0 -0
  314. /package/{esm2020 → esm2022}/lib/core/payment/form-response.interface.mjs +0 -0
  315. /package/{esm2020 → esm2022}/lib/core/payment/initialize/initialize-request-params.interface.mjs +0 -0
  316. /package/{esm2020 → esm2022}/lib/core/payment/initialize/response/initialize-response.token.mjs +0 -0
  317. /package/{esm2020 → esm2022}/lib/core/payment/invoice.interface.mjs +0 -0
  318. /package/{esm2020 → esm2022}/lib/core/payment/payment-config.interface.mjs +0 -0
  319. /package/{esm2020 → esm2022}/lib/core/payment/payment-form.interface.mjs +0 -0
  320. /package/{esm2020 → esm2022}/lib/core/payment/payment.interface.mjs +0 -0
  321. /package/{esm2020 → esm2022}/lib/core/payment/status/check-status/request/check-status-request.token.mjs +0 -0
  322. /package/{esm2020 → esm2022}/lib/core/payment/status/check-status/response/check-status-response.class.mjs +0 -0
  323. /package/{esm2020 → esm2022}/lib/core/payment/status/check-status/response/check-status-response.token.mjs +0 -0
  324. /package/{esm2020 → esm2022}/lib/core/payment/status/finance-info-field.interface.mjs +0 -0
  325. /package/{esm2020 → esm2022}/lib/core/payment/status/line-item.interface.mjs +0 -0
  326. /package/{esm2020 → esm2022}/lib/core/payment/status/save-payment-method-status/api/saved-payment-account-changes.interface.mjs +0 -0
  327. /package/{esm2020 → esm2022}/lib/core/payment/status/save-payment-method-status/api/saved-payment-account.interface.mjs +0 -0
  328. /package/{esm2020 → esm2022}/lib/core/payment/status/save-payment-method-status/save-payment-method-status.enum.mjs +0 -0
  329. /package/{esm2020 → esm2022}/lib/core/payment/status/status-finance-info.interface.mjs +0 -0
  330. /package/{esm2020 → esm2022}/lib/core/payment/status/status-groups.mjs +0 -0
  331. /package/{esm2020 → esm2022}/lib/core/payment/status/status-order.interface.mjs +0 -0
  332. /package/{esm2020 → esm2022}/lib/core/payment/status/status-request/request/status-request.token.mjs +0 -0
  333. /package/{esm2020 → esm2022}/lib/core/payment/status/status-request/required-status-search-params.const.mjs +0 -0
  334. /package/{esm2020 → esm2022}/lib/core/payment/status/status-request/response/status-response.token.mjs +0 -0
  335. /package/{esm2020 → esm2022}/lib/core/payment/status/status-request/status-request-params.interface.mjs +0 -0
  336. /package/{esm2020 → esm2022}/lib/core/payment/status/status-request/status-search-param.enum.mjs +0 -0
  337. /package/{esm2020 → esm2022}/lib/core/payment/status/status-request/status-search-params.map.mjs +0 -0
  338. /package/{esm2020 → esm2022}/lib/core/payment/status/status-settings.interface.mjs +0 -0
  339. /package/{esm2020 → esm2022}/lib/core/payment/status/status-updated.interface.mjs +0 -0
  340. /package/{esm2020 → esm2022}/lib/core/payment/status/status.enum.mjs +0 -0
  341. /package/{esm2020 → esm2022}/lib/core/payment/status/status.interface.mjs +0 -0
  342. /package/{esm2020 → esm2022}/lib/core/payment/status/title-class.enum.mjs +0 -0
  343. /package/{esm2020 → esm2022}/lib/core/payment/status/web-socket-client-type.enum.mjs +0 -0
  344. /package/{esm2020 → esm2022}/lib/core/payment/status/websocket-status/websocket-status.enum.mjs +0 -0
  345. /package/{esm2020 → esm2022}/lib/core/payment/submit/request/submit-request.token.mjs +0 -0
  346. /package/{esm2020 → esm2022}/lib/core/payment/submit/response/is-submit-response.function.mjs +0 -0
  347. /package/{esm2020 → esm2022}/lib/core/payment/submit/response/submit-response.token.mjs +0 -0
  348. /package/{esm2020 → esm2022}/lib/core/payment/sync/field-async-validation.interface.mjs +0 -0
  349. /package/{esm2020 → esm2022}/lib/core/payment/sync/field-sync-state.interface.mjs +0 -0
  350. /package/{esm2020 → esm2022}/lib/core/payment/sync/request/sync-request.token.mjs +0 -0
  351. /package/{esm2020 → esm2022}/lib/core/payment/sync/response/sync-response.token.mjs +0 -0
  352. /package/{esm2020 → esm2022}/lib/core/payment/three-ds/api/notify-dfp-status/request/notify-dfp-status-request.class.mjs +0 -0
  353. /package/{esm2020 → esm2022}/lib/core/payment/three-ds/api/notify-dfp-status/request/notify-dfp-status-request.token.mjs +0 -0
  354. /package/{esm2020 → esm2022}/lib/core/payment/three-ds/api/status-three-ds/request/status-three-ds-request.class.mjs +0 -0
  355. /package/{esm2020 → esm2022}/lib/core/payment/three-ds/api/status-three-ds/request/status-three-ds-request.token.mjs +0 -0
  356. /package/{esm2020 → esm2022}/lib/core/payment/three-ds/api/status-three-ds/response/status-three-ds-response.class.mjs +0 -0
  357. /package/{esm2020 → esm2022}/lib/core/payment/three-ds/api/status-three-ds/response/status-three-ds-response.token.mjs +0 -0
  358. /package/{esm2020 → esm2022}/lib/core/payment/three-ds/api/status-three-ds/status-three-ds-response.interface.mjs +0 -0
  359. /package/{esm2020 → esm2022}/lib/core/payment/three-ds/api/status-three-ds/status-types.enum.mjs +0 -0
  360. /package/{esm2020 → esm2022}/lib/core/payment/three-ds/api/status-three-ds/three-ds-checkout-form.interface.mjs +0 -0
  361. /package/{esm2020 → esm2022}/lib/core/payment/three-ds/reinsurance-check/timer.interface.mjs +0 -0
  362. /package/{esm2020 → esm2022}/lib/core/payment/three-ds/three-ds-20/status-update.interface.mjs +0 -0
  363. /package/{esm2020 → esm2022}/lib/core/payment/three-ds/three-ds-form.interface.mjs +0 -0
  364. /package/{esm2020 → esm2022}/lib/core/payment/three-ds/three-ds-status-websocket-types.enum.mjs +0 -0
  365. /package/{esm2020 → esm2022}/lib/core/payment/virtual-currency.interface.mjs +0 -0
  366. /package/{esm2020 → esm2022}/lib/core/payment/xps-api-part.abstract.mjs +0 -0
  367. /package/{esm2020 → esm2022}/lib/core/payment/xps-checkout.mjs +0 -0
  368. /package/{esm2020 → esm2022}/lib/core/payment/xps-comand.enum.mjs +0 -0
  369. /package/{esm2020 → esm2022}/lib/core/payment/xps-error.interface.mjs +0 -0
  370. /package/{esm2020 → esm2022}/lib/core/payment/xps-finance.interface.mjs +0 -0
  371. /package/{esm2020 → esm2022}/lib/core/payment/xps-message.interface.mjs +0 -0
  372. /package/{esm2020 → esm2022}/lib/core/payment/xps-purchase.interface.mjs +0 -0
  373. /package/{esm2020 → esm2022}/lib/core/payment/xps-request-params.interface.mjs +0 -0
  374. /package/{esm2020 → esm2022}/lib/core/payment/xps-request.interface.mjs +0 -0
  375. /package/{esm2020 → esm2022}/lib/core/payment/xps-response.error.mjs +0 -0
  376. /package/{esm2020 → esm2022}/lib/core/payment/xps-response.interface.mjs +0 -0
  377. /package/{esm2020 → esm2022}/lib/core/payment/xps-summary.interface.mjs +0 -0
  378. /package/{esm2020 → esm2022}/lib/core/payment-methods/payment-method-api.interface.mjs +0 -0
  379. /package/{esm2020 → esm2022}/lib/core/payment-methods/payment-method.interface.mjs +0 -0
  380. /package/{esm2020 → esm2022}/lib/core/payment-methods/payment-methods-api.interface.mjs +0 -0
  381. /package/{esm2020 → esm2022}/lib/core/payment-methods/payment-methods-request-params.interface.mjs +0 -0
  382. /package/{esm2020 → esm2022}/lib/core/payment-methods/payment-methods-response.class.mjs +0 -0
  383. /package/{esm2020 → esm2022}/lib/core/payment-methods/payment-methods-response.interface.mjs +0 -0
  384. /package/{esm2020 → esm2022}/lib/core/payment-methods/payment-methods-response.token.mjs +0 -0
  385. /package/{esm2020 → esm2022}/lib/core/performance/xhr-action.interface.mjs +0 -0
  386. /package/{esm2020 → esm2022}/lib/core/properties.type.mjs +0 -0
  387. /package/{esm2020 → esm2022}/lib/core/saved-methods/saved-method-api.interface.mjs +0 -0
  388. /package/{esm2020 → esm2022}/lib/core/saved-methods/saved-method.interface.mjs +0 -0
  389. /package/{esm2020 → esm2022}/lib/core/saved-methods/saved-methods-request-params.interface.mjs +0 -0
  390. /package/{esm2020 → esm2022}/lib/core/saved-methods/saved-methods-response.class.mjs +0 -0
  391. /package/{esm2020 → esm2022}/lib/core/saved-methods/saved-methods-response.interface.mjs +0 -0
  392. /package/{esm2020 → esm2022}/lib/core/saved-methods/saved-methods-response.token.mjs +0 -0
  393. /package/{esm2020 → esm2022}/lib/core/sdk-payment-systems/apple-pay/apple-pay-integration.type.mjs +0 -0
  394. /package/{esm2020 → esm2022}/lib/core/sdk-payment-systems/apple-pay/apple-pay-params.interface.mjs +0 -0
  395. /package/{esm2020 → esm2022}/lib/core/sdk-payment-systems/apple-pay/apple-pay.const.mjs +0 -0
  396. /package/{esm2020 → esm2022}/lib/core/sdk-payment-systems/apple-pay/apple-pay.errors.enum.mjs +0 -0
  397. /package/{esm2020 → esm2022}/lib/core/sdk-payment-systems/apple-pay/checkout-params.interface.mjs +0 -0
  398. /package/{esm2020 → esm2022}/lib/core/sdk-payment-systems/google-pay/google-pay-button-color.type.mjs +0 -0
  399. /package/{esm2020 → esm2022}/lib/core/sdk-payment-systems/google-pay/google-pay-checkout.interface.mjs +0 -0
  400. /package/{esm2020 → esm2022}/lib/core/sdk-payment-systems/google-pay/google-pay-init-params.interface.mjs +0 -0
  401. /package/{esm2020 → esm2022}/lib/core/sdk-payment-systems/google-pay/google-pay-library.interface.mjs +0 -0
  402. /package/{esm2020 → esm2022}/lib/core/sdk-payment-systems/sdk-payment-methods.const.mjs +0 -0
  403. /package/{esm2020 → esm2022}/lib/core/sdk-payment-systems/sdk-payment-systems-initial-data.interface.mjs +0 -0
  404. /package/{esm2020 → esm2022}/lib/core/sdk-payment-systems/sdk-payment-systems.interface.mjs +0 -0
  405. /package/{esm2020 → esm2022}/lib/core/settings/auto-redirect-on-status.mjs +0 -0
  406. /package/{esm2020 → esm2022}/lib/core/settings/balance.interface.mjs +0 -0
  407. /package/{esm2020 → esm2022}/lib/core/settings/bonus.interface.mjs +0 -0
  408. /package/{esm2020 → esm2022}/lib/core/settings/configuration.interface.mjs +0 -0
  409. /package/{esm2020 → esm2022}/lib/core/settings/empty-utils-response.error.mjs +0 -0
  410. /package/{esm2020 → esm2022}/lib/core/settings/header-type.enum.mjs +0 -0
  411. /package/{esm2020 → esm2022}/lib/core/settings/offer.interface.mjs +0 -0
  412. /package/{esm2020 → esm2022}/lib/core/settings/project.interface.mjs +0 -0
  413. /package/{esm2020 → esm2022}/lib/core/settings/purchase.interface.mjs +0 -0
  414. /package/{esm2020 → esm2022}/lib/core/settings/settings-mode.enum.mjs +0 -0
  415. /package/{esm2020 → esm2022}/lib/core/settings/settings.interface.mjs +0 -0
  416. /package/{esm2020 → esm2022}/lib/core/settings/status-back-show.mjs +0 -0
  417. /package/{esm2020 → esm2022}/lib/core/settings/tracking-info.interface.mjs +0 -0
  418. /package/{esm2020 → esm2022}/lib/core/settings/user.interface.mjs +0 -0
  419. /package/{esm2020 → esm2022}/lib/core/settings/utils-response.interface.mjs +0 -0
  420. /package/{esm2020 → esm2022}/lib/core/type-guards/is-null.function.mjs +0 -0
  421. /package/{esm2020 → esm2022}/lib/core/type-guards/is-string.function.mjs +0 -0
  422. /package/{esm2020 → esm2022}/lib/core/type-guards/is-undefined.function.mjs +0 -0
  423. /package/{esm2020 → esm2022}/lib/core/url/search-params.interface.mjs +0 -0
  424. /package/{esm2020 → esm2022}/lib/core/user-agent/browserInfo.interface.mjs +0 -0
  425. /package/{esm2020 → esm2022}/lib/core/user-agent/browsers.mjs +0 -0
  426. /package/{esm2020 → esm2022}/lib/core/user-agent/device.enum.mjs +0 -0
  427. /package/{esm2020 → esm2022}/lib/core/user-agent/os.mjs +0 -0
  428. /package/{esm2020 → esm2022}/lib/core/user-agent/user-agent-data.interface.mjs +0 -0
  429. /package/{esm2020 → esm2022}/lib/core/user-balance/user-balance-api.interface.mjs +0 -0
  430. /package/{esm2020 → esm2022}/lib/core/user-balance/user-balance-request-params.interface.mjs +0 -0
  431. /package/{esm2020 → esm2022}/lib/core/user-balance/user-balance-response.class.mjs +0 -0
  432. /package/{esm2020 → esm2022}/lib/core/user-balance/user-balance-response.token.mjs +0 -0
  433. /package/{esm2020 → esm2022}/lib/core/user-behaviour-analytics/event-builder/event-parameter-types.mjs +0 -0
  434. /package/{esm2020 → esm2022}/lib/core/user-behaviour-analytics/event-builder/invoice.interface.mjs +0 -0
  435. /package/{esm2020 → esm2022}/lib/core/user-behaviour-analytics/event-builder/purchase.type.mjs +0 -0
  436. /package/{esm2020 → esm2022}/lib/core/user-behaviour-analytics/event-builder/user-behaviour-event.interface.mjs +0 -0
  437. /package/{esm2020 → esm2022}/lib/core/user-behaviour-analytics/one-time-analytics-events.const.mjs +0 -0
  438. /package/{esm2020 → esm2022}/lib/core/user-behaviour-analytics/user-behaviour-analytics.interface.mjs +0 -0
  439. /package/{esm2020 → esm2022}/lib/core/user-behaviour-analytics/user-behaviour-event/user-behaviour-event-categories.mjs +0 -0
  440. /package/{esm2020 → esm2022}/lib/core/user-behaviour-analytics/user-behaviour-event/user-behaviour-event-types.mjs +0 -0
  441. /package/{esm2020 → esm2022}/lib/core/user-behaviour-analytics/user-behaviour-event-name.enum.mjs +0 -0
  442. /package/{esm2020 → esm2022}/lib/core/user-behaviour-analytics/user-session-options.mjs +0 -0
  443. /package/{esm2020 → esm2022}/lib/core/web-socket/web-socket-client-type.enum.mjs +0 -0
  444. /package/{esm2020 → esm2022}/lib/core/web-socket/web-socket.interface.mjs +0 -0
  445. /package/{esm2020 → esm2022}/lib/core/window.token.mjs +0 -0
  446. /package/{esm2020 → esm2022}/lib/core/xps-boolean.enum.mjs +0 -0
  447. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  448. /package/{esm2020 → esm2022}/xsolla-payment-client-core.mjs +0 -0
@@ -0,0 +1,268 @@
1
+ import { Subject } from 'rxjs';
2
+ import { Inject, Injectable } from '@angular/core';
3
+ import { applePayVersion, safariVersionForIframeIntegration, } from './apple-pay.const';
4
+ import { agreementsGroup } from '../../agreementsGroup.const';
5
+ import { windowToken } from '../../window.token';
6
+ import { FieldNames } from '../../payment/field-names.enum';
7
+ import { ApplePayErrors } from './apple-pay.errors.enum';
8
+ import { pagesRoutes } from '../../payment/actions/redirect/ps4-pages/pages-routes.const';
9
+ import { applePayId } from '../../payment/actions/redirect/ps4-pages/pages-payment-methods-id.const';
10
+ import { payStation4Url, sandboxPayStationUrl, } from '../../payment/actions/redirect/pay-station4-url.const';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "../../user-agent/user-agent.service";
13
+ import * as i2 from "../../payment/finance-details/summary/summary-finance-details-adapter.service";
14
+ export class ApplePayService {
15
+ get paymentParameters() {
16
+ return this.applePayParams;
17
+ }
18
+ get payment$() {
19
+ return this.payment.asObservable();
20
+ }
21
+ get error$() {
22
+ return this.error.asObservable();
23
+ }
24
+ get integrationType$() {
25
+ return this.integrationType.asObservable();
26
+ }
27
+ constructor(window, userAgentService, summaryFinanceDetailsAdapterService) {
28
+ this.window = window;
29
+ this.userAgentService = userAgentService;
30
+ this.summaryFinanceDetailsAdapterService = summaryFinanceDetailsAdapterService;
31
+ this.agreementFieldsNames = agreementsGroup;
32
+ this.payment = new Subject();
33
+ this.error = new Subject();
34
+ this.integrationType = new Subject();
35
+ this.paymentClient = null;
36
+ this.applePayParams = null;
37
+ this.order = null;
38
+ this.api = this.loadBraintree();
39
+ }
40
+ setApplePayParams(data) {
41
+ const formFields = data?.paymentForm?.fields;
42
+ const summary = data?.paymentForm?.summary;
43
+ if (!formFields || !summary) {
44
+ return;
45
+ }
46
+ const fields = formFields.reduce((acc, field) => {
47
+ if (this.agreementFieldsNames.includes(field.name) &&
48
+ field.isVisible === '1') {
49
+ acc[field.name] = field.title;
50
+ }
51
+ else {
52
+ acc[field.name] = field.value;
53
+ }
54
+ return acc;
55
+ }, {});
56
+ const agreements = this.agreementFieldsNames
57
+ .map((fieldName) => fields[fieldName])
58
+ .filter(Boolean);
59
+ this.applePayParams = {
60
+ tokenKey: this.getAppleToken(formFields),
61
+ totalLabel: fields['label_applePay'] ?? '',
62
+ totalAmount: this.getTotalAmount(summary),
63
+ currencyCode: this.getTotalCurrency(summary),
64
+ countryCode: fields['countryCode'] ?? '',
65
+ merchantCapabilities: this.getJsonValueFromField(fields, 'merchantCapabilities'),
66
+ supportedNetworks: this.getJsonValueFromField(fields, 'supportedNetworks'),
67
+ agreements: agreements,
68
+ };
69
+ }
70
+ async initLibrary(tokenKey) {
71
+ try {
72
+ const api = await this.api;
73
+ const clientInstance = await api.client.create({
74
+ authorization: tokenKey,
75
+ });
76
+ this.paymentClient = await api.applePay.create({
77
+ client: clientInstance,
78
+ });
79
+ }
80
+ catch (error) {
81
+ console.error('apple pay: initialize failed', error);
82
+ }
83
+ this.emitIntegrationType();
84
+ if (!this.paymentClient || !this.isDeviceCapable()) {
85
+ this.emitError(ApplePayErrors.deviceIsNotCapableError);
86
+ }
87
+ }
88
+ redirectToPaymentPage(parameters, token, isSandbox) {
89
+ const route = pagesRoutes.get(applePayId);
90
+ if (!route) {
91
+ return;
92
+ }
93
+ const query = new URLSearchParams({
94
+ ...parameters,
95
+ merchantCapabilities: JSON.stringify(parameters.merchantCapabilities),
96
+ supportedNetworks: JSON.stringify(parameters.supportedNetworks),
97
+ token,
98
+ agreements: JSON.stringify(parameters.agreements),
99
+ });
100
+ if (this.order) {
101
+ query.append('order', this.order);
102
+ }
103
+ const payStationUrl = isSandbox ? sandboxPayStationUrl : payStation4Url;
104
+ return `${payStationUrl}/en${route}?${query.toString()}`;
105
+ }
106
+ setOrder(data) {
107
+ const summary = data?.paymentForm?.summary;
108
+ if (!summary) {
109
+ return;
110
+ }
111
+ const financeDetails = this.summaryFinanceDetailsAdapterService.getFinanceDetails(summary);
112
+ if (financeDetails?.purchase && financeDetails?.finance) {
113
+ const cartItems = financeDetails.cartItems;
114
+ this.order = cartItems?.reduce((curr, item) => {
115
+ if (curr) {
116
+ return curr + `; ${item.title}`;
117
+ }
118
+ return curr + item.title;
119
+ }, '');
120
+ }
121
+ }
122
+ proceedCheckout(parameters) {
123
+ if (!parameters) {
124
+ return;
125
+ }
126
+ if (!this.paymentClient || !this.isDeviceCapable()) {
127
+ console.warn('apple pay: device is not capable', this.paymentClient);
128
+ this.emitError(ApplePayErrors.deviceIsNotCapableError);
129
+ return;
130
+ }
131
+ try {
132
+ const paymentRequest = this.paymentClient.createPaymentRequest({
133
+ total: {
134
+ label: parameters.totalLabel,
135
+ amount: parameters.totalAmount,
136
+ },
137
+ currencyCode: parameters.currencyCode,
138
+ countryCode: parameters.countryCode,
139
+ merchantCapabilities: parameters.merchantCapabilities,
140
+ supportedNetworks: parameters.supportedNetworks,
141
+ });
142
+ const session = new this.window.ApplePaySession(applePayVersion, paymentRequest);
143
+ session.onvalidatemerchant = (event) => {
144
+ console.info('apple pay: merchant validation', event);
145
+ this.paymentClient
146
+ ?.performValidation({
147
+ validationURL: event.validationURL,
148
+ displayName: parameters?.totalLabel,
149
+ })
150
+ .then((merchantSession) => {
151
+ session.completeMerchantValidation(merchantSession);
152
+ })
153
+ .catch((error) => {
154
+ console.error('apple pay: merchant validation error', error);
155
+ this.emitError(ApplePayErrors.paymentError);
156
+ session.abort();
157
+ });
158
+ };
159
+ session.onpaymentauthorized = (event) => {
160
+ console.info('apple pay: payment authorization', event);
161
+ this.paymentClient
162
+ ?.tokenize({
163
+ token: event.payment.token,
164
+ })
165
+ .then((authorizationResponse) => {
166
+ this.payment.next(authorizationResponse?.nonce ?? '');
167
+ session.completePayment(this.window.ApplePaySession.STATUS_SUCCESS);
168
+ })
169
+ .catch((error) => {
170
+ console.error('apple pay: payment authorization error', error);
171
+ this.emitError(ApplePayErrors.paymentError);
172
+ session.completePayment(this.window.ApplePaySession.STATUS_FAILURE);
173
+ });
174
+ };
175
+ session.oncancel = (event) => {
176
+ this.emitError(ApplePayErrors.paymentError);
177
+ console.error('apple pay: user cancel payment', event);
178
+ };
179
+ session.begin();
180
+ }
181
+ catch (error) {
182
+ console.error('apple pay: checkout error', error);
183
+ this.emitError(ApplePayErrors.paymentError);
184
+ }
185
+ }
186
+ isDeviceCapable() {
187
+ try {
188
+ return Boolean(this.window.ApplePaySession?.supportsVersion(applePayVersion) &&
189
+ this.window.ApplePaySession?.canMakePayments());
190
+ }
191
+ catch (error) {
192
+ return false;
193
+ }
194
+ }
195
+ getTokenNonceFieldData(tokenNonce) {
196
+ const name = FieldNames.tokenApplePay;
197
+ const value = btoa(tokenNonce);
198
+ return { name, value };
199
+ }
200
+ updateApplePayParams(data) {
201
+ const summary = data?.summary;
202
+ if (!this.applePayParams || !summary) {
203
+ return;
204
+ }
205
+ this.applePayParams.totalAmount = this.getTotalAmount(summary);
206
+ this.applePayParams.currencyCode = this.getTotalCurrency(summary);
207
+ }
208
+ async loadBraintree() {
209
+ const api = await import('braintree-web');
210
+ return api;
211
+ }
212
+ getAppleToken(formFields) {
213
+ const appleTokenField = formFields.find((field) => {
214
+ return field.name === 'token_key';
215
+ });
216
+ if (!appleTokenField) {
217
+ return '';
218
+ }
219
+ return appleTokenField.value;
220
+ }
221
+ getTotalAmount(summary) {
222
+ const finance = summary?.finance;
223
+ const total = finance?.grand_total?.amount ?? finance?.total.amount;
224
+ return total?.toString() ?? '';
225
+ }
226
+ getTotalCurrency(summary) {
227
+ const finance = summary?.finance;
228
+ return finance?.grand_total?.currency ?? finance?.total?.currency ?? '';
229
+ }
230
+ getJsonValueFromField(fields, fieldName) {
231
+ const field = fields[fieldName];
232
+ try {
233
+ return field ? JSON.parse(field) : undefined;
234
+ }
235
+ catch (error) {
236
+ return undefined;
237
+ }
238
+ }
239
+ emitError(error) {
240
+ this.error.next(error);
241
+ }
242
+ emitIntegrationType() {
243
+ let integrationType;
244
+ if (this.paymentClient && this.isDeviceCapable()) {
245
+ integrationType = 'redirect';
246
+ }
247
+ else {
248
+ integrationType = 'none';
249
+ }
250
+ this.integrationType.next(integrationType);
251
+ }
252
+ canUseSdk() {
253
+ return !!(this.userAgentService.safariVersion &&
254
+ this.userAgentService.safariVersion >= safariVersionForIframeIntegration);
255
+ }
256
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ApplePayService, deps: [{ token: windowToken }, { token: i1.UserAgentService }, { token: i2.SummaryFinanceDetailsAdapterService }], target: i0.ɵɵFactoryTarget.Injectable }); }
257
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ApplePayService, providedIn: 'root' }); }
258
+ }
259
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ApplePayService, decorators: [{
260
+ type: Injectable,
261
+ args: [{
262
+ providedIn: 'root',
263
+ }]
264
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
265
+ type: Inject,
266
+ args: [windowToken]
267
+ }] }, { type: i1.UserAgentService }, { type: i2.SummaryFinanceDetailsAdapterService }] });
268
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGUtcGF5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wYXltZW50LWNsaWVudC1jb3JlL3NyYy9saWIvY29yZS9zZGstcGF5bWVudC1zeXN0ZW1zL2FwcGxlLXBheS9hcHBsZS1wYXkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFDTCxlQUFlLEVBQ2YsaUNBQWlDLEdBQ2xDLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBSTlELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR3pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUMxRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUVBQXlFLENBQUM7QUFHckcsT0FBTyxFQUNMLGNBQWMsRUFDZCxvQkFBb0IsR0FDckIsTUFBTSx1REFBdUQsQ0FBQzs7OztBQUsvRCxNQUFNLE9BQU8sZUFBZTtJQWdCMUIsSUFBVyxpQkFBaUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJ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QWMsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO0lBRU8sU0FBUyxDQUFDLEtBQXFCO1FBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxlQUFvQyxDQUFDO1FBRXpDLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztZQUNqRCxlQUFlLEdBQUcsVUFBVSxDQUFDO1FBQy9CLENBQUM7YUFBTSxDQUFDO1lBQ04sZUFBZSxHQUFHLE1BQU0sQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVPLFNBQVM7UUFDZixPQUFPLENBQUMsQ0FBQyxDQUNQLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhO1lBQ25DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLElBQUksaUNBQWlDLENBQ3pFLENBQUM7SUFDSixDQUFDOzhHQXJVVSxlQUFlLGtCQWlDaEIsV0FBVztrSEFqQ1YsZUFBZSxjQUZkLE1BQU07OzJGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFrQ0ksTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwbGVQYXksIGFwcGxlUGF5LCBjbGllbnQgfSBmcm9tICdicmFpbnRyZWUtd2ViJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgYXBwbGVQYXlWZXJzaW9uLFxuICBzYWZhcmlWZXJzaW9uRm9ySWZyYW1lSW50ZWdyYXRpb24sXG59IGZyb20gJy4vYXBwbGUtcGF5LmNvbnN0JztcbmltcG9ydCB7IGFncmVlbWVudHNHcm91cCB9IGZyb20gJy4uLy4uL2FncmVlbWVudHNHcm91cC5jb25zdCc7XG5pbXBvcnQgeyBBcHBsZVBheVBhcmFtcyB9IGZyb20gJy4vYXBwbGUtcGF5LXBhcmFtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmllbGQgfSBmcm9tICcuLi8uLi9wYXltZW50L2ZpZWxkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBFeHRlbmRlZFdpbmRvdyB9IGZyb20gJy4uLy4uL2V4dGVuZGVkLXdpbmRvdy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgd2luZG93VG9rZW4gfSBmcm9tICcuLi8uLi93aW5kb3cudG9rZW4nO1xuaW1wb3J0IHsgWHBzUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9wYXltZW50L3hwcy1yZXNwb25zZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRmllbGROYW1lcyB9IGZyb20gJy4uLy4uL3BheW1lbnQvZmllbGQtbmFtZXMuZW51bSc7XG5pbXBvcnQgeyBBcHBsZVBheUVycm9ycyB9IGZyb20gJy4vYXBwbGUtcGF5LmVycm9ycy5lbnVtJztcbmltcG9ydCB7IFVzZXJBZ2VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi91c2VyLWFnZW50L3VzZXItYWdlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBsZVBheUludGVncmF0aW9uIH0gZnJvbSAnLi9hcHBsZS1wYXktaW50ZWdyYXRpb24udHlwZSc7XG5pbXBvcnQgeyBwYWdlc1JvdXRlcyB9IGZyb20gJy4uLy4uL3BheW1lbnQvYWN0aW9ucy9yZWRpcmVjdC9wczQtcGFnZXMvcGFnZXMtcm91dGVzLmNvbnN0JztcbmltcG9ydCB7IGFwcGxlUGF5SWQgfSBmcm9tICcuLi8uLi9wYXltZW50L2FjdGlvbnMvcmVkaXJlY3QvcHM0LXBhZ2VzL3BhZ2VzLXBheW1lbnQtbWV0aG9kcy1pZC5jb25zdCc7XG5pbXBvcnQgeyBJbml0aWFsaXplUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9wYXltZW50L2luaXRpYWxpemUvcmVzcG9uc2UvaW5pdGlhbGl6ZS1yZXNwb25zZS5jbGFzcyc7XG5pbXBvcnQgeyBTdW1tYXJ5RmluYW5jZURldGFpbHNBZGFwdGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3BheW1lbnQvZmluYW5jZS1kZXRhaWxzL3N1bW1hcnkvc3VtbWFyeS1maW5hbmNlLWRldGFpbHMtYWRhcHRlci5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIHBheVN0YXRpb240VXJsLFxuICBzYW5kYm94UGF5U3RhdGlvblVybCxcbn0gZnJvbSAnLi4vLi4vcGF5bWVudC9hY3Rpb25zL3JlZGlyZWN0L3BheS1zdGF0aW9uNC11cmwuY29uc3QnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQXBwbGVQYXlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhZ3JlZW1lbnRGaWVsZHNOYW1lczogc3RyaW5nW10gPSBhZ3JlZW1lbnRzR3JvdXA7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGF5bWVudDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBlcnJvcjogU3ViamVjdDxBcHBsZVBheUVycm9ycz4gPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IGludGVncmF0aW9uVHlwZTogU3ViamVjdDxBcHBsZVBheUludGVncmF0aW9uPiA9XG4gICAgbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIHBheW1lbnRDbGllbnQ6IEFwcGxlUGF5IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBhcGk6IFByb21pc2U8e1xuICAgIGFwcGxlUGF5OiB0eXBlb2YgYXBwbGVQYXk7XG4gICAgY2xpZW50OiB0eXBlb2YgY2xpZW50O1xuICB9PjtcbiAgcHJpdmF0ZSBhcHBsZVBheVBhcmFtczogQXBwbGVQYXlQYXJhbXMgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBvcmRlcj86IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBnZXQgcGF5bWVudFBhcmFtZXRlcnMoKTogQXBwbGVQYXlQYXJhbXMgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5hcHBsZVBheVBhcmFtcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGF5bWVudCQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5wYXltZW50LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBlcnJvciQoKTogT2JzZXJ2YWJsZTxBcHBsZVBheUVycm9ycz4ge1xuICAgIHJldHVybiB0aGlzLmVycm9yLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBpbnRlZ3JhdGlvblR5cGUkKCk6IE9ic2VydmFibGU8QXBwbGVQYXlJbnRlZ3JhdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmludGVncmF0aW9uVHlwZS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KHdpbmRvd1Rva2VuKSBwcml2YXRlIHJlYWRvbmx5IHdpbmRvdzogRXh0ZW5kZWRXaW5kb3csXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyQWdlbnRTZXJ2aWNlOiBVc2VyQWdlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3VtbWFyeUZpbmFuY2VEZXRhaWxzQWRhcHRlclNlcnZpY2U6IFN1bW1hcnlGaW5hbmNlRGV0YWlsc0FkYXB0ZXJTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuYXBpID0gdGhpcy5sb2FkQnJhaW50cmVlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0QXBwbGVQYXlQYXJhbXMoZGF0YTogdW5rbm93bik6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1GaWVsZHMgPSAoZGF0YSBhcyBJbml0aWFsaXplUmVzcG9uc2UpPy5wYXltZW50Rm9ybT8uZmllbGRzO1xuICAgIGNvbnN0IHN1bW1hcnkgPSAoZGF0YSBhcyBJbml0aWFsaXplUmVzcG9uc2UpPy5wYXltZW50Rm9ybT8uc3VtbWFyeTtcblxuICAgIGlmICghZm9ybUZpZWxkcyB8fCAhc3VtbWFyeSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmaWVsZHMgPSBmb3JtRmllbGRzLnJlZHVjZShcbiAgICAgIChhY2M6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0sIGZpZWxkKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aGlzLmFncmVlbWVudEZpZWxkc05hbWVzLmluY2x1ZGVzKGZpZWxkLm5hbWUpICYmXG4gICAgICAgICAgZmllbGQuaXNWaXNpYmxlID09PSAnMSdcbiAgICAgICAgKSB7XG4gICAgICAgICAgYWNjW2ZpZWxkLm5hbWVdID0gZmllbGQudGl0bGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWNjW2ZpZWxkLm5hbWVdID0gZmllbGQudmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHt9XG4gICAgKTtcblxuICAgIGNvbnN0IGFncmVlbWVudHMgPSB0aGlzLmFncmVlbWVudEZpZWxkc05hbWVzXG4gICAgICAubWFwKChmaWVsZE5hbWUpID0+IGZpZWxkc1tmaWVsZE5hbWUgYXMga2V5b2YgdHlwZW9mIGZpZWxkc10gYXMgc3RyaW5nKVxuICAgICAgLmZpbHRlcihCb29sZWFuKTtcblxuICAgIHRoaXMuYXBwbGVQYXlQYXJhbXMgPSB7XG4gICAgICB0b2tlbktleTogdGhpcy5nZXRBcHBsZVRva2VuKGZvcm1GaWVsZHMpLFxuICAgICAgdG90YWxMYWJlbDogZmllbGRzWydsYWJlbF9hcHBsZVBheSddID8/ICcnLFxuICAgICAgdG90YWxBbW91bnQ6IHRoaXMuZ2V0VG90YWxBbW91bnQoc3VtbWFyeSksXG4gICAgICBjdXJyZW5jeUNvZGU6IHRoaXMuZ2V0VG90YWxDdXJyZW5jeShzdW1tYXJ5KSxcbiAgICAgIGNvdW50cnlDb2RlOiBmaWVsZHNbJ2NvdW50cnlDb2RlJ10gPz8gJycsXG4gICAgICBtZXJjaGFudENhcGFiaWxpdGllczogdGhpcy5nZXRKc29uVmFsdWVGcm9tRmllbGQoXG4gICAgICAgIGZpZWxkcyxcbiAgICAgICAgJ21lcmNoYW50Q2FwYWJpbGl0aWVzJ1xuICAgICAgKSxcbiAgICAgIHN1cHBvcnRlZE5ldHdvcmtzOiB0aGlzLmdldEpzb25WYWx1ZUZyb21GaWVsZChcbiAgICAgICAgZmllbGRzLFxuICAgICAgICAnc3VwcG9ydGVkTmV0d29ya3MnXG4gICAgICApLFxuICAgICAgYWdyZWVtZW50czogYWdyZWVtZW50cyxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGluaXRMaWJyYXJ5KHRva2VuS2V5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYXBpID0gYXdhaXQgdGhpcy5hcGk7XG4gICAgICBjb25zdCBjbGllbnRJbnN0YW5jZSA9IGF3YWl0IGFwaS5jbGllbnQuY3JlYXRlKHtcbiAgICAgICAgYXV0aG9yaXphdGlvbjogdG9rZW5LZXksXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5wYXltZW50Q2xpZW50ID0gYXdhaXQgYXBpLmFwcGxlUGF5LmNyZWF0ZSh7XG4gICAgICAgIGNsaWVudDogY2xpZW50SW5zdGFuY2UsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgY29uc29sZS5lcnJvcignYXBwbGUgcGF5OiBpbml0aWFsaXplIGZhaWxlZCcsIGVycm9yKTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRJbnRlZ3JhdGlvblR5cGUoKTtcblxuICAgIGlmICghdGhpcy5wYXltZW50Q2xpZW50IHx8ICF0aGlzLmlzRGV2aWNlQ2FwYWJsZSgpKSB7XG4gICAgICB0aGlzLmVtaXRFcnJvcihBcHBsZVBheUVycm9ycy5kZXZpY2VJc05vdENhcGFibGVFcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlZGlyZWN0VG9QYXltZW50UGFnZShcbiAgICBwYXJhbWV0ZXJzOiBBcHBsZVBheVBhcmFtcyxcbiAgICB0b2tlbjogc3RyaW5nLFxuICAgIGlzU2FuZGJveD86IGJvb2xlYW5cbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCByb3V0ZSA9IHBhZ2VzUm91dGVzLmdldChhcHBsZVBheUlkKTtcbiAgICBpZiAoIXJvdXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcXVlcnkgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHtcbiAgICAgIC4uLnBhcmFtZXRlcnMsXG4gICAgICBtZXJjaGFudENhcGFiaWxpdGllczogSlNPTi5zdHJpbmdpZnkocGFyYW1ldGVycy5tZXJjaGFudENhcGFiaWxpdGllcyksXG4gICAgICBzdXBwb3J0ZWROZXR3b3JrczogSlNPTi5zdHJpbmdpZnkocGFyYW1ldGVycy5zdXBwb3J0ZWROZXR3b3JrcyksXG4gICAgICB0b2tlbixcbiAgICAgIGFncmVlbWVudHM6IEpTT04uc3RyaW5naWZ5KHBhcmFtZXRlcnMuYWdyZWVtZW50cyksXG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5vcmRlcikge1xuICAgICAgcXVlcnkuYXBwZW5kKCdvcmRlcicsIHRoaXMub3JkZXIpO1xuICAgIH1cblxuICAgIGNvbnN0IHBheVN0YXRpb25VcmwgPSBpc1NhbmRib3ggPyBzYW5kYm94UGF5U3RhdGlvblVybCA6IHBheVN0YXRpb240VXJsO1xuICAgIHJldHVybiBgJHtwYXlTdGF0aW9uVXJsfS9lbiR7cm91dGV9PyR7cXVlcnkudG9TdHJpbmcoKX1gO1xuICB9XG5cbiAgcHVibGljIHNldE9yZGVyKGRhdGE6IHVua25vd24pOiB2b2lkIHtcbiAgICBjb25zdCBzdW1tYXJ5ID0gKGRhdGEgYXMgSW5pdGlhbGl6ZVJlc3BvbnNlKT8ucGF5bWVudEZvcm0/LnN1bW1hcnk7XG4gICAgaWYgKCFzdW1tYXJ5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGZpbmFuY2VEZXRhaWxzID1cbiAgICAgIHRoaXMuc3VtbWFyeUZpbmFuY2VEZXRhaWxzQWRhcHRlclNlcnZpY2UuZ2V0RmluYW5jZURldGFpbHMoc3VtbWFyeSk7XG5cbiAgICBpZiAoZmluYW5jZURldGFpbHM/LnB1cmNoYXNlICYmIGZpbmFuY2VEZXRhaWxzPy5maW5hbmNlKSB7XG4gICAgICBjb25zdCBjYXJ0SXRlbXMgPSBmaW5hbmNlRGV0YWlscy5jYXJ0SXRlbXM7XG4gICAgICB0aGlzLm9yZGVyID0gY2FydEl0ZW1zPy5yZWR1Y2UoKGN1cnIsIGl0ZW0pID0+IHtcbiAgICAgICAgaWYgKGN1cnIpIHtcbiAgICAgICAgICByZXR1cm4gY3VyciArIGA7ICR7aXRlbS50aXRsZX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGN1cnIgKyBpdGVtLnRpdGxlO1xuICAgICAgfSwgJycpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBwcm9jZWVkQ2hlY2tvdXQocGFyYW1ldGVycz86IEFwcGxlUGF5UGFyYW1zKTogdm9pZCB7XG4gICAgaWYgKCFwYXJhbWV0ZXJzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnBheW1lbnRDbGllbnQgfHwgIXRoaXMuaXNEZXZpY2VDYXBhYmxlKCkpIHtcbiAgICAgIGNvbnNvbGUud2FybignYXBwbGUgcGF5OiBkZXZpY2UgaXMgbm90IGNhcGFibGUnLCB0aGlzLnBheW1lbnRDbGllbnQpO1xuICAgICAgdGhpcy5lbWl0RXJyb3IoQXBwbGVQYXlFcnJvcnMuZGV2aWNlSXNOb3RDYXBhYmxlRXJyb3IpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXltZW50UmVxdWVzdCA9IHRoaXMucGF5bWVudENsaWVudC5jcmVhdGVQYXltZW50UmVxdWVzdCh7XG4gICAgICAgIHRvdGFsOiB7XG4gICAgICAgICAgbGFiZWw6IHBhcmFtZXRlcnMudG90YWxMYWJlbCxcbiAgICAgICAgICBhbW91bnQ6IHBhcmFtZXRlcnMudG90YWxBbW91bnQsXG4gICAgICAgIH0sXG4gICAgICAgIGN1cnJlbmN5Q29kZTogcGFyYW1ldGVycy5jdXJyZW5jeUNvZGUsXG4gICAgICAgIGNvdW50cnlDb2RlOiBwYXJhbWV0ZXJzLmNvdW50cnlDb2RlLFxuICAgICAgICBtZXJjaGFudENhcGFiaWxpdGllczogcGFyYW1ldGVycy5tZXJjaGFudENhcGFiaWxpdGllcyxcbiAgICAgICAgc3VwcG9ydGVkTmV0d29ya3M6IHBhcmFtZXRlcnMuc3VwcG9ydGVkTmV0d29ya3MsXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc2Vzc2lvbiA9IG5ldyB0aGlzLndpbmRvdy5BcHBsZVBheVNlc3Npb24oXG4gICAgICAgIGFwcGxlUGF5VmVyc2lvbixcbiAgICAgICAgcGF5bWVudFJlcXVlc3RcbiAgICAgICk7XG5cbiAgICAgIHNlc3Npb24ub252YWxpZGF0ZW1lcmNoYW50ID0gKGV2ZW50OiB7IHZhbGlkYXRpb25VUkw6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgIGNvbnNvbGUuaW5mbygnYXBwbGUgcGF5OiBtZXJjaGFudCB2YWxpZGF0aW9uJywgZXZlbnQpO1xuICAgICAgICB0aGlzLnBheW1lbnRDbGllbnRcbiAgICAgICAgICA/LnBlcmZvcm1WYWxpZGF0aW9uKHtcbiAgICAgICAgICAgIHZhbGlkYXRpb25VUkw6IGV2ZW50LnZhbGlkYXRpb25VUkwsXG4gICAgICAgICAgICBkaXNwbGF5TmFtZTogcGFyYW1ldGVycz8udG90YWxMYWJlbCxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC50aGVuKChtZXJjaGFudFNlc3Npb24pID0+IHtcbiAgICAgICAgICAgIHNlc3Npb24uY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24obWVyY2hhbnRTZXNzaW9uKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2FwcGxlIHBheTogbWVyY2hhbnQgdmFsaWRhdGlvbiBlcnJvcicsIGVycm9yKTtcbiAgICAgICAgICAgIHRoaXMuZW1pdEVycm9yKEFwcGxlUGF5RXJyb3JzLnBheW1lbnRFcnJvcik7XG4gICAgICAgICAgICBzZXNzaW9uLmFib3J0KCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICBzZXNzaW9uLm9ucGF5bWVudGF1dGhvcml6ZWQgPSAoZXZlbnQ6IHsgcGF5bWVudDogeyB0b2tlbjogc3RyaW5nIH0gfSkgPT4ge1xuICAgICAgICBjb25zb2xlLmluZm8oJ2FwcGxlIHBheTogcGF5bWVudCBhdXRob3JpemF0aW9uJywgZXZlbnQpO1xuICAgICAgICB0aGlzLnBheW1lbnRDbGllbnRcbiAgICAgICAgICA/LnRva2VuaXplKHtcbiAgICAgICAgICAgIHRva2VuOiBldmVudC5wYXltZW50LnRva2VuLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnRoZW4oKGF1dGhvcml6YXRpb25SZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wYXltZW50Lm5leHQoYXV0aG9yaXphdGlvblJlc3BvbnNlPy5ub25jZSA/PyAnJyk7XG4gICAgICAgICAgICBzZXNzaW9uLmNvbXBsZXRlUGF5bWVudCh0aGlzLndpbmRvdy5BcHBsZVBheVNlc3Npb24uU1RBVFVTX1NVQ0NFU1MpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignYXBwbGUgcGF5OiBwYXltZW50IGF1dGhvcml6YXRpb24gZXJyb3InLCBlcnJvcik7XG4gICAgICAgICAgICB0aGlzLmVtaXRFcnJvcihBcHBsZVBheUVycm9ycy5wYXltZW50RXJyb3IpO1xuICAgICAgICAgICAgc2Vzc2lvbi5jb21wbGV0ZVBheW1lbnQodGhpcy53aW5kb3cuQXBwbGVQYXlTZXNzaW9uLlNUQVRVU19GQUlMVVJFKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIHNlc3Npb24ub25jYW5jZWwgPSAoZXZlbnQ6IHVua25vd24pID0+IHtcbiAgICAgICAgdGhpcy5lbWl0RXJyb3IoQXBwbGVQYXlFcnJvcnMucGF5bWVudEVycm9yKTtcbiAgICAgICAgY29uc29sZS5lcnJvcignYXBwbGUgcGF5OiB1c2VyIGNhbmNlbCBwYXltZW50JywgZXZlbnQpO1xuICAgICAgfTtcblxuICAgICAgc2Vzc2lvbi5iZWdpbigpO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdhcHBsZSBwYXk6IGNoZWNrb3V0IGVycm9yJywgZXJyb3IpO1xuICAgICAgdGhpcy5lbWl0RXJyb3IoQXBwbGVQYXlFcnJvcnMucGF5bWVudEVycm9yKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNEZXZpY2VDYXBhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gQm9vbGVhbihcbiAgICAgICAgdGhpcy53aW5kb3cuQXBwbGVQYXlTZXNzaW9uPy5zdXBwb3J0c1ZlcnNpb24oYXBwbGVQYXlWZXJzaW9uKSAmJlxuICAgICAgICAgIHRoaXMud2luZG93LkFwcGxlUGF5U2Vzc2lvbj8uY2FuTWFrZVBheW1lbnRzKClcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0VG9rZW5Ob25jZUZpZWxkRGF0YSh0b2tlbk5vbmNlOiBzdHJpbmcpOiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gIH0ge1xuICAgIGNvbnN0IG5hbWUgPSBGaWVsZE5hbWVzLnRva2VuQXBwbGVQYXk7XG4gICAgY29uc3QgdmFsdWUgPSBidG9hKHRva2VuTm9uY2UpO1xuICAgIHJldHVybiB7IG5hbWUsIHZhbHVlIH07XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQXBwbGVQYXlQYXJhbXMoZGF0YTogdW5rbm93bik6IHZvaWQge1xuICAgIGNvbnN0IHN1bW1hcnkgPSAoZGF0YSBhcyBYcHNSZXNwb25zZSk/LnN1bW1hcnk7XG4gICAgaWYgKCF0aGlzLmFwcGxlUGF5UGFyYW1zIHx8ICFzdW1tYXJ5KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5hcHBsZVBheVBhcmFtcy50b3RhbEFtb3VudCA9IHRoaXMuZ2V0VG90YWxBbW91bnQoc3VtbWFyeSk7XG4gICAgdGhpcy5hcHBsZVBheVBhcmFtcy5jdXJyZW5jeUNvZGUgPSB0aGlzLmdldFRvdGFsQ3VycmVuY3koc3VtbWFyeSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRCcmFpbnRyZWUoKTogUHJvbWlzZTx7XG4gICAgYXBwbGVQYXk6IHR5cGVvZiBhcHBsZVBheTtcbiAgICBjbGllbnQ6IHR5cGVvZiBjbGllbnQ7XG4gIH0+IHtcbiAgICBjb25zdCBhcGkgPSBhd2FpdCBpbXBvcnQoJ2JyYWludHJlZS13ZWInKTtcblxuICAgIHJldHVybiBhcGk7XG4gIH1cblxuICBwcml2YXRlIGdldEFwcGxlVG9rZW4oZm9ybUZpZWxkczogRmllbGRbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgYXBwbGVUb2tlbkZpZWxkID0gZm9ybUZpZWxkcy5maW5kKChmaWVsZCkgPT4ge1xuICAgICAgcmV0dXJuIGZpZWxkLm5hbWUgPT09ICd0b2tlbl9rZXknO1xuICAgIH0pO1xuXG4gICAgaWYgKCFhcHBsZVRva2VuRmllbGQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gYXBwbGVUb2tlbkZpZWxkLnZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb3RhbEFtb3VudChzdW1tYXJ5OiBYcHNSZXNwb25zZVsnc3VtbWFyeSddKTogc3RyaW5nIHtcbiAgICBjb25zdCBmaW5hbmNlID0gc3VtbWFyeT8uZmluYW5jZTtcbiAgICBjb25zdCB0b3RhbCA9IGZpbmFuY2U/LmdyYW5kX3RvdGFsPy5hbW91bnQgPz8gZmluYW5jZT8udG90YWwuYW1vdW50O1xuXG4gICAgcmV0dXJuIHRvdGFsPy50b1N0cmluZygpID8/ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb3RhbEN1cnJlbmN5KHN1bW1hcnk6IFhwc1Jlc3BvbnNlWydzdW1tYXJ5J10pOiBzdHJpbmcge1xuICAgIGNvbnN0IGZpbmFuY2UgPSBzdW1tYXJ5Py5maW5hbmNlO1xuICAgIHJldHVybiBmaW5hbmNlPy5ncmFuZF90b3RhbD8uY3VycmVuY3kgPz8gZmluYW5jZT8udG90YWw/LmN1cnJlbmN5ID8/ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRKc29uVmFsdWVGcm9tRmllbGQoXG4gICAgZmllbGRzOiB7XG4gICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgfSxcbiAgICBmaWVsZE5hbWU6IHN0cmluZ1xuICApOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZmllbGQgPSBmaWVsZHNbZmllbGROYW1lXTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZmllbGQgPyAoSlNPTi5wYXJzZShmaWVsZCkgYXMgc3RyaW5nW10pIDogdW5kZWZpbmVkO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZW1pdEVycm9yKGVycm9yOiBBcHBsZVBheUVycm9ycyk6IHZvaWQge1xuICAgIHRoaXMuZXJyb3IubmV4dChlcnJvcik7XG4gIH1cblxuICBwcml2YXRlIGVtaXRJbnRlZ3JhdGlvblR5cGUoKTogdm9pZCB7XG4gICAgbGV0IGludGVncmF0aW9uVHlwZTogQXBwbGVQYXlJbnRlZ3JhdGlvbjtcblxuICAgIGlmICh0aGlzLnBheW1lbnRDbGllbnQgJiYgdGhpcy5pc0RldmljZUNhcGFibGUoKSkge1xuICAgICAgaW50ZWdyYXRpb25UeXBlID0gJ3JlZGlyZWN0JztcbiAgICB9IGVsc2Uge1xuICAgICAgaW50ZWdyYXRpb25UeXBlID0gJ25vbmUnO1xuICAgIH1cblxuICAgIHRoaXMuaW50ZWdyYXRpb25UeXBlLm5leHQoaW50ZWdyYXRpb25UeXBlKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FuVXNlU2RrKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIShcbiAgICAgIHRoaXMudXNlckFnZW50U2VydmljZS5zYWZhcmlWZXJzaW9uICYmXG4gICAgICB0aGlzLnVzZXJBZ2VudFNlcnZpY2Uuc2FmYXJpVmVyc2lvbiA+PSBzYWZhcmlWZXJzaW9uRm9ySWZyYW1lSW50ZWdyYXRpb25cbiAgICApO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,177 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import { BehaviorSubject, filter, take } from 'rxjs';
3
+ import { windowToken } from '../../window.token';
4
+ import { AppError } from '../../exceptions-handling/errors/app-error.class';
5
+ import { CheckStatusActionCreator } from '../../payment/actions/check-status/check-status.action.class';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../payment-systems/payment-system-processing.service";
8
+ export class GooglePayService {
9
+ get libraryWasInitialized() {
10
+ return !!this.window.google;
11
+ }
12
+ get googlePaymentClientWasInitialized() {
13
+ return !!this.googlePaymentClient;
14
+ }
15
+ constructor(window, paymentSystemProcessingService, injector) {
16
+ this.window = window;
17
+ this.paymentSystemProcessingService = paymentSystemProcessingService;
18
+ this.injector = injector;
19
+ this.googlePayScriptUrl = 'https://pay.google.com/gp/p/js/pay.js';
20
+ this.readyToPay = new BehaviorSubject(null);
21
+ this.checkout = null;
22
+ this.googlePaymentClient = null;
23
+ }
24
+ get readyToPay$() {
25
+ return this.readyToPay.asObservable();
26
+ }
27
+ isReadyToPay() {
28
+ return this.readyToPay.getValue();
29
+ }
30
+ initGooglePayLibrary(data) {
31
+ this.isSandbox = data.isSandbox;
32
+ this.country = data.country;
33
+ if (this.libraryWasInitialized && this.googlePaymentClientWasInitialized) {
34
+ return;
35
+ }
36
+ if (this.libraryWasInitialized && !this.googlePaymentClientWasInitialized) {
37
+ this.setupGooglePayClient();
38
+ return;
39
+ }
40
+ this.paymentSystemProcessingService.loadScript(this.googlePayScriptUrl, this.onLoadScript.bind(this));
41
+ }
42
+ checkPaymentDevice(base64checkoutData) {
43
+ this.paymentSystemProcessingService.initialize$
44
+ .pipe(filter(Boolean), take(1))
45
+ .subscribe(() => {
46
+ this.checkout =
47
+ this.paymentSystemProcessingService.getDecodedCheckout(base64checkoutData);
48
+ if (!this.checkout || !this.googlePaymentClient) {
49
+ throw new AppError(`Google Pay: no checkout or google payment client, checkout - ${Boolean(this.checkout).toString()}, client - ${Boolean(this.googlePaymentClient).toString()}`);
50
+ }
51
+ const checkoutData = this.checkout.request.form.fields;
52
+ const isReadyToPayRequest = JSON.parse(checkoutData.isReadyToPayRequest);
53
+ this.googlePaymentClient
54
+ .isReadyToPay(isReadyToPayRequest)
55
+ .then((response) => {
56
+ if (response.result && this.googlePaymentClient) {
57
+ this.googlePaymentClient.prefetchPaymentData(JSON.parse(checkoutData.paymentDataRequest));
58
+ return this.readyToPay.next(true);
59
+ }
60
+ this.readyToPay.next(false);
61
+ const result = response.result?.toString() ?? '';
62
+ const isHavePaymentClient = Boolean(this.googlePaymentClient).toString();
63
+ throw new Error(`Google Pay: possibly no response.result or googlePaymentClient is missing, result - ${result}, isHavePaymentClient - ${isHavePaymentClient}`);
64
+ })
65
+ .catch((error) => {
66
+ this.readyToPay.next(false);
67
+ let message = error ?? '';
68
+ if (error instanceof Error) {
69
+ message = error.message;
70
+ }
71
+ throw new AppError(`Google Pay: device is not ready to pay, ${message}`);
72
+ });
73
+ });
74
+ }
75
+ async proceedCheckout() {
76
+ if (!this.checkout || !this.googlePaymentClient) {
77
+ const isHaveCheckout = !!this.checkout;
78
+ const isHaveClient = !!this.googlePaymentClient;
79
+ throw new AppError(`Google Pay: no checkout or google payment client, checkout - ${isHaveCheckout.toString()}, client - ${isHaveClient.toString()}`);
80
+ }
81
+ const checkoutData = this.checkout.request.form.fields;
82
+ const paymentDataRequest = JSON.parse(checkoutData.paymentDataRequest);
83
+ paymentDataRequest.transactionInfo = {
84
+ currencyCode: checkoutData.currency,
85
+ totalPriceStatus: 'FINAL',
86
+ totalPrice: checkoutData.sum,
87
+ countryCode: this.country,
88
+ };
89
+ const checkStatusAction = this.injector
90
+ .get(CheckStatusActionCreator)
91
+ .getActionData();
92
+ try {
93
+ const paymentData = await this.googlePaymentClient.loadPaymentData(paymentDataRequest);
94
+ if (!paymentData?.paymentMethodData?.tokenizationData?.token) {
95
+ throw new AppError('Google Pay: token is missing');
96
+ }
97
+ if (!this.checkout) {
98
+ throw new AppError('Google Pay: no checkout data in then');
99
+ }
100
+ let returnUrl = this.checkout.request.form.fields.returnSuccessUrl;
101
+ const data = this.checkout.request.form.fields;
102
+ returnUrl += `&cpf_number=${data.cpf_number}&descriptor=${data.descriptor}&paymentData=${JSON.stringify(paymentData)}`;
103
+ this.paymentSystemProcessingService.emitStatusUrl(returnUrl);
104
+ return checkStatusAction;
105
+ }
106
+ catch (error) {
107
+ if (!this.checkout) {
108
+ throw new AppError(`Google Pay: no checkout data`);
109
+ }
110
+ const statusCode = error
111
+ ?.statusCode;
112
+ const isStatusCanceled = statusCode && this.isCancelledStatus(statusCode);
113
+ if (isStatusCanceled) {
114
+ return null;
115
+ }
116
+ const returnUrl = this.checkout.request.form.fields.returnFailUrl;
117
+ this.paymentSystemProcessingService.emitStatusUrl(returnUrl);
118
+ return checkStatusAction;
119
+ }
120
+ }
121
+ createButton(onClickHandler, buttonColor = 'default') {
122
+ if (!this.checkout || !this.googlePaymentClient) {
123
+ return null;
124
+ }
125
+ const checkoutData = this.checkout.request.form.fields;
126
+ const paymentDataRequest = JSON.parse(checkoutData.paymentDataRequest);
127
+ return this.googlePaymentClient.createButton({
128
+ onClick: onClickHandler,
129
+ allowedPaymentMethods: paymentDataRequest.allowedPaymentMethods,
130
+ buttonSizeMode: 'fill',
131
+ buttonType: 'buy',
132
+ buttonColor,
133
+ });
134
+ }
135
+ setupGooglePayClient() {
136
+ if (!this.window.google) {
137
+ return;
138
+ }
139
+ const environment = this.isSandbox ? 'TEST' : 'PRODUCTION';
140
+ this.googlePaymentClient =
141
+ new this.window.google.payments.api.PaymentsClient({
142
+ environment,
143
+ });
144
+ }
145
+ onLoadScript() {
146
+ if (!this.window.google) {
147
+ const retryTimeout = 1000;
148
+ setTimeout(() => {
149
+ const isAvailableGoogleClient = !!this.window.google;
150
+ if (isAvailableGoogleClient) {
151
+ this.setupGooglePayClient();
152
+ this.paymentSystemProcessingService.emitInitialize(true);
153
+ }
154
+ }, retryTimeout);
155
+ throw new AppError('Google Pay: google library now is available');
156
+ }
157
+ else {
158
+ this.setupGooglePayClient();
159
+ this.paymentSystemProcessingService.emitInitialize(true);
160
+ }
161
+ }
162
+ isCancelledStatus(statusCode) {
163
+ return statusCode.toLowerCase() === 'canceled';
164
+ }
165
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: GooglePayService, deps: [{ token: windowToken }, { token: i1.PaymentSystemProcessingService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
166
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: GooglePayService, providedIn: 'root' }); }
167
+ }
168
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: GooglePayService, decorators: [{
169
+ type: Injectable,
170
+ args: [{
171
+ providedIn: 'root',
172
+ }]
173
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
174
+ type: Inject,
175
+ args: [windowToken]
176
+ }] }, { type: i1.PaymentSystemProcessingService }, { type: i0.Injector }] });
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLXBheS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGF5bWVudC1jbGllbnQtY29yZS9zcmMvbGliL2NvcmUvc2RrLXBheW1lbnQtc3lzdGVtcy9nb29nbGUtcGF5L2dvb2dsZS1wYXkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQU03RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBYyxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWpELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUc1RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQzs7O0FBT3hHLE1BQU0sT0FBTyxnQkFBZ0I7SUFXM0IsSUFBWSxxQkFBcUI7UUFDL0IsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVksaUNBQWlDO1FBQzNDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNwQyxDQUFDO0lBRUQsWUFDd0MsTUFBc0IsRUFDNUMsOEJBQThELEVBQzlELFFBQWtCO1FBRkksV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDNUMsbUNBQThCLEdBQTlCLDhCQUE4QixDQUFnQztRQUM5RCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBckJuQix1QkFBa0IsR0FBRyx1Q0FBdUMsQ0FBQztRQUU3RCxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQWlCLElBQUksQ0FBQyxDQUFDO1FBRWhFLGFBQVEsR0FBNkIsSUFBSSxDQUFDO1FBQzFDLHdCQUFtQixHQUEyQixJQUFJLENBQUM7SUFpQnhELENB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ZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR29vZ2xlUGF5Q2hlY2tvdXQgfSBmcm9tICcuL2dvb2dsZS1wYXktY2hlY2tvdXQuaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIEdvb2dsZVBheUNsaWVudCxcbiAgR29vZ2xlUGF5UGF5bWVudFJlcXVlc3QsXG59IGZyb20gJy4vZ29vZ2xlLXBheS1saWJyYXJ5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpbHRlciwgT2JzZXJ2YWJsZSwgdGFrZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUGF5bWVudFN5c3RlbVByb2Nlc3NpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vcGF5bWVudC1zeXN0ZW1zL3BheW1lbnQtc3lzdGVtLXByb2Nlc3Npbmcuc2VydmljZSc7XG5pbXBvcnQgeyB3aW5kb3dUb2tlbiB9IGZyb20gJy4uLy4uL3dpbmRvdy50b2tlbic7XG5pbXBvcnQgeyBFeHRlbmRlZFdpbmRvdyB9IGZyb20gJy4uLy4uL2V4dGVuZGVkLXdpbmRvdy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQXBwRXJyb3IgfSBmcm9tICcuLi8uLi9leGNlcHRpb25zLWhhbmRsaW5nL2Vycm9ycy9hcHAtZXJyb3IuY2xhc3MnO1xuaW1wb3J0IHsgR29vZ2xlUGF5SW5pdFBhcmFtcyB9IGZyb20gJy4vZ29vZ2xlLXBheS1pbml0LXBhcmFtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTmV4dEFjdGlvbiB9IGZyb20gJy4uLy4uL3BheW1lbnQvYWN0aW9ucy9uZXh0LWFjdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2hlY2tTdGF0dXNBY3Rpb25DcmVhdG9yIH0gZnJvbSAnLi4vLi4vcGF5bWVudC9hY3Rpb25zL2NoZWNrLXN0YXR1cy9jaGVjay1zdGF0dXMuYWN0aW9uLmNsYXNzJztcbmltcG9ydCB7IENoZWNrU3RhdHVzQWN0aW9uIH0gZnJvbSAnLi4vLi4vcGF5bWVudC9hY3Rpb25zL2NoZWNrLXN0YXR1cy9jaGVjay1zdGF0dXMuYWN0aW9uLnR5cGUnO1xuaW1wb3J0IHsgR29vZ2xlUGF5QnV0dG9uQ29sb3JUeXBlIH0gZnJvbSAnLi9nb29nbGUtcGF5LWJ1dHRvbi1jb2xvci50eXBlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEdvb2dsZVBheVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGdvb2dsZVBheVNjcmlwdFVybCA9ICdodHRwczovL3BheS5nb29nbGUuY29tL2dwL3AvanMvcGF5LmpzJztcblxuICBwcml2YXRlIHJlYWRvbmx5IHJlYWR5VG9QYXkgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4gfCBudWxsPihudWxsKTtcblxuICBwcml2YXRlIGNoZWNrb3V0OiBHb29nbGVQYXlDaGVja291dCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGdvb2dsZVBheW1lbnRDbGllbnQ6IEdvb2dsZVBheUNsaWVudCB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgaXNTYW5kYm94ITogYm9vbGVhbjtcbiAgcHJpdmF0ZSBjb3VudHJ5ITogc3RyaW5nO1xuXG4gIHByaXZhdGUgZ2V0IGxpYnJhcnlXYXNJbml0aWFsaXplZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLndpbmRvdy5nb29nbGU7XG4gIH1cblxuICBwcml2YXRlIGdldCBnb29nbGVQYXltZW50Q2xpZW50V2FzSW5pdGlhbGl6ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5nb29nbGVQYXltZW50Q2xpZW50O1xuICB9XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3Qod2luZG93VG9rZW4pIHByaXZhdGUgcmVhZG9ubHkgd2luZG93OiBFeHRlbmRlZFdpbmRvdyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgcGF5bWVudFN5c3RlbVByb2Nlc3NpbmdTZXJ2aWNlOiBQYXltZW50U3lzdGVtUHJvY2Vzc2luZ1NlcnZpY2UsXG4gICAgcHVibGljIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvclxuICApIHt9XG5cbiAgcHVibGljIGdldCByZWFkeVRvUGF5JCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMucmVhZHlUb1BheS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1JlYWR5VG9QYXkoKTogYm9vbGVhbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnJlYWR5VG9QYXkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0R29vZ2xlUGF5TGlicmFyeShkYXRhOiBHb29nbGVQYXlJbml0UGFyYW1zKTogdm9pZCB7XG4gICAgdGhpcy5pc1NhbmRib3ggPSBkYXRhLmlzU2FuZGJveDtcbiAgICB0aGlzLmNvdW50cnkgPSBkYXRhLmNvdW50cnk7XG5cbiAgICBpZiAodGhpcy5saWJyYXJ5V2FzSW5pdGlhbGl6ZWQgJiYgdGhpcy5nb29nbGVQYXltZW50Q2xpZW50V2FzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5saWJyYXJ5V2FzSW5pdGlhbGl6ZWQgJiYgIXRoaXMuZ29vZ2xlUGF5bWVudENsaWVudFdhc0luaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLnNldHVwR29vZ2xlUGF5Q2xpZW50KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wYXltZW50U3lzdGVtUHJvY2Vzc2luZ1NlcnZpY2UubG9hZFNjcmlwdChcbiAgICAgIHRoaXMuZ29vZ2xlUGF5U2NyaXB0VXJsLFxuICAgICAgdGhpcy5vbkxvYWRTY3JpcHQuYmluZCh0aGlzKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgY2hlY2tQYXltZW50RGV2aWNlKGJhc2U2NGNoZWNrb3V0RGF0YTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5wYXltZW50U3lzdGVtUHJvY2Vzc2luZ1NlcnZpY2UuaW5pdGlhbGl6ZSRcbiAgICAgIC5waXBlKGZpbHRlcihCb29sZWFuKSwgdGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNoZWNrb3V0ID1cbiAgICAgICAgICB0aGlzLnBheW1lbnRTeXN0ZW1Qcm9jZXNzaW5nU2VydmljZS5nZXREZWNvZGVkQ2hlY2tvdXQ8R29vZ2xlUGF5Q2hlY2tvdXQ+KFxuICAgICAgICAgICAgYmFzZTY0Y2hlY2tvdXREYXRhXG4gICAgICAgICAgKTtcblxuICAgICAgICBpZiAoIXRoaXMuY2hlY2tvdXQgfHwgIXRoaXMuZ29vZ2xlUGF5bWVudENsaWVudCkge1xuICAgICAgICAgIHRocm93IG5ldyBBcHBFcnJvcihcbiAgICAgICAgICAgIGBHb29nbGUgUGF5OiBubyBjaGVja291dCBvciBnb29nbGUgcGF5bWVudCBjbGllbnQsIGNoZWNrb3V0IC0gJHtCb29sZWFuKFxuICAgICAgICAgICAgICB0aGlzLmNoZWNrb3V0XG4gICAgICAgICAgICApLnRvU3RyaW5nKCl9LCBjbGllbnQgLSAke0Jvb2xlYW4oXG4gICAgICAgICAgICAgIHRoaXMuZ29vZ2xlUGF5bWVudENsaWVudFxuICAgICAgICAgICAgKS50b1N0cmluZygpfWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2hlY2tvdXREYXRhID0gdGhpcy5jaGVja291dC5yZXF1ZXN0LmZvcm0uZmllbGRzO1xuICAgICAgICBjb25zdCBpc1JlYWR5VG9QYXlSZXF1ZXN0ID0gSlNPTi5wYXJzZShcbiAgICAgICAgICBjaGVja291dERhdGEuaXNSZWFkeVRvUGF5UmVxdWVzdFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZ29vZ2xlUGF5bWVudENsaWVudFxuICAgICAgICAgIC5pc1JlYWR5VG9QYXkoaXNSZWFkeVRvUGF5UmVxdWVzdClcbiAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZXN1bHQgJiYgdGhpcy5nb29nbGVQYXltZW50Q2xpZW50KSB7XG4gICAgICAgICAgICAgIHRoaXMuZ29vZ2xlUGF5bWVudENsaWVudC5wcmVmZXRjaFBheW1lbnREYXRhKFxuICAgICAgICAgICAgICAgIEpTT04ucGFyc2UoY2hlY2tvdXREYXRhLnBheW1lbnREYXRhUmVxdWVzdClcbiAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkeVRvUGF5Lm5leHQodHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucmVhZHlUb1BheS5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdD8udG9TdHJpbmcoKSA/PyAnJztcbiAgICAgICAgICAgIGNvbnN0IGlzSGF2ZVBheW1lbnRDbGllbnQgPSBCb29sZWFuKFxuICAgICAgICAgICAgICB0aGlzLmdvb2dsZVBheW1lbnRDbGllbnRcbiAgICAgICAgICAgICkudG9TdHJpbmcoKTtcblxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICBgR29vZ2xlIFBheTogcG9zc2libHkgbm8gcmVzcG9uc2UucmVzdWx0IG9yIGdvb2dsZVBheW1lbnRDbGllbnQgaXMgbWlzc2luZywgcmVzdWx0IC0gJHtyZXN1bHR9LCBpc0hhdmVQYXltZW50Q2xpZW50IC0gJHtpc0hhdmVQYXltZW50Q2xpZW50fWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlYWR5VG9QYXkubmV4dChmYWxzZSk7XG5cbiAgICAgICAgICAgIGxldCBtZXNzYWdlID0gKGVycm9yIGFzIHN0cmluZykgPz8gJyc7XG5cbiAgICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICAgIG1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aHJvdyBuZXcgQXBwRXJyb3IoXG4gICAgICAgICAgICAgIGBHb29nbGUgUGF5OiBkZXZpY2UgaXMgbm90IHJlYWR5IHRvIHBheSwgJHttZXNzYWdlfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcm9jZWVkQ2hlY2tvdXQoKTogUHJvbWlzZTxDaGVja1N0YXR1c0FjdGlvbiB8IG51bGw+IHtcbiAgICBpZiAoIXRoaXMuY2hlY2tvdXQgfHwgIXRoaXMuZ29vZ2xlUGF5bWVudENsaWVudCkge1xuICAgICAgY29uc3QgaXNIYXZlQ2hlY2tvdXQgPSAhIXRoaXMuY2hlY2tvdXQ7XG4gICAgICBjb25zdCBpc0hhdmVDbGllbnQgPSAhIXRoaXMuZ29vZ2xlUGF5bWVudENsaWVudDtcblxuICAgICAgdGhyb3cgbmV3IEFwcEVycm9yKFxuICAgICAgICBgR29vZ2xlIFBheTogbm8gY2hlY2tvdXQgb3IgZ29vZ2xlIHBheW1lbnQgY2xpZW50LCBjaGVja291dCAtICR7aXNIYXZlQ2hlY2tvdXQudG9TdHJpbmcoKX0sIGNsaWVudCAtICR7aXNIYXZlQ2xpZW50LnRvU3RyaW5nKCl9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBjaGVja291dERhdGEgPSB0aGlzLmNoZWNrb3V0LnJlcXVlc3QuZm9ybS5maWVsZHM7XG5cbiAgICBjb25zdCBwYXltZW50RGF0YVJlcXVlc3QgPSBKU09OLnBhcnNlKFxuICAgICAgY2hlY2tvdXREYXRhLnBheW1lbnREYXRhUmVxdWVzdFxuICAgICkgYXMgR29vZ2xlUGF5UGF5bWVudFJlcXVlc3Q7XG5cbiAgICBwYXltZW50RGF0YVJlcXVlc3QudHJhbnNhY3Rpb25JbmZvID0ge1xuICAgICAgY3VycmVuY3lDb2RlOiBjaGVja291dERhdGEuY3VycmVuY3ksXG4gICAgICB0b3RhbFByaWNlU3RhdHVzOiAnRklOQUwnLFxuICAgICAgdG90YWxQcmljZTogY2hlY2tvdXREYXRhLnN1bSxcbiAgICAgIGNvdW50cnlDb2RlOiB0aGlzLmNvdW50cnksXG4gICAgfTtcblxuICAgIGNvbnN0IGNoZWNrU3RhdHVzQWN0aW9uOiBOZXh0QWN0aW9uID0gdGhpcy5pbmplY3RvclxuICAgICAgLmdldDxDaGVja1N0YXR1c0FjdGlvbkNyZWF0b3I+KENoZWNrU3RhdHVzQWN0aW9uQ3JlYXRvcilcbiAgICAgIC5nZXRBY3Rpb25EYXRhKCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcGF5bWVudERhdGEgPSBhd2FpdCB0aGlzLmdvb2dsZVBheW1lbnRDbGllbnQubG9hZFBheW1lbnREYXRhKFxuICAgICAgICBwYXltZW50RGF0YVJlcXVlc3RcbiAgICAgICk7XG5cbiAgICAgIGlmICghcGF5bWVudERhdGE/LnBheW1lbnRNZXRob2REYXRhPy50b2tlbml6YXRpb25EYXRhPy50b2tlbikge1xuICAgICAgICB0aHJvdyBuZXcgQXBwRXJyb3IoJ0dvb2dsZSBQYXk6IHRva2VuIGlzIG1pc3NpbmcnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLmNoZWNrb3V0KSB7XG4gICAgICAgIHRocm93IG5ldyBBcHBFcnJvcignR29vZ2xlIFBheTogbm8gY2hlY2tvdXQgZGF0YSBpbiB0aGVuJyk7XG4gICAgICB9XG5cbiAgICAgIGxldCByZXR1cm5VcmwgPSB0aGlzLmNoZWNrb3V0LnJlcXVlc3QuZm9ybS5maWVsZHMucmV0dXJuU3VjY2Vzc1VybDtcblxuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuY2hlY2tvdXQucmVxdWVzdC5mb3JtLmZpZWxkcztcbiAgICAgIHJldHVyblVybCArPSBgJmNwZl9udW1iZXI9JHtkYXRhLmNwZl9udW1iZXJ9JmRlc2NyaXB0b3I9JHtcbiAgICAgICAgZGF0YS5kZXNjcmlwdG9yXG4gICAgICB9JnBheW1lbnREYXRhPSR7SlNPTi5zdHJpbmdpZnkocGF5bWVudERhdGEpfWA7XG5cbiAgICAgIHRoaXMucGF5bWVudFN5c3RlbVByb2Nlc3NpbmdTZXJ2aWNlLmVtaXRTdGF0dXNVcmwocmV0dXJuVXJsKTtcblxuICAgICAgcmV0dXJuIGNoZWNrU3RhdHVzQWN0aW9uO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICBpZiAoIXRoaXMuY2hlY2tvdXQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEFwcEVycm9yKGBHb29nbGUgUGF5OiBubyBjaGVja291dCBkYXRhYCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN0YXR1c0NvZGUgPSAoZXJyb3IgYXMgdW5rbm93biBhcyB7IHN0YXR1c0NvZGU/OiBzdHJpbmcgfSlcbiAgICAgICAgPy5zdGF0dXNDb2RlO1xuXG4gICAgICBjb25zdCBpc1N0YXR1c0NhbmNlbGVkID0gc3RhdHVzQ29kZSAmJiB0aGlzLmlzQ2FuY2VsbGVkU3RhdHVzKHN0YXR1c0NvZGUpO1xuXG4gICAgICBpZiAoaXNTdGF0dXNDYW5jZWxlZCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmV0dXJuVXJsID0gdGhpcy5jaGVja291dC5yZXF1ZXN0LmZvcm0uZmllbGRzLnJldHVybkZhaWxVcmw7XG5cbiAgICAgIHRoaXMucGF5bWVudFN5c3RlbVByb2Nlc3NpbmdTZXJ2aWNlLmVtaXRTdGF0dXNVcmwocmV0dXJuVXJsKTtcblxuICAgICAgcmV0dXJuIGNoZWNrU3RhdHVzQWN0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVCdXR0b24oXG4gICAgb25DbGlja0hhbmRsZXI6ICgpID0+IHZvaWQsXG4gICAgYnV0dG9uQ29sb3I6IEdvb2dsZVBheUJ1dHRvbkNvbG9yVHlwZSA9ICdkZWZhdWx0J1xuICApOiBIVE1MQnV0dG9uRWxlbWVudCB8IG51bGwge1xuICAgIGlmICghdGhpcy5jaGVja291dCB8fCAhdGhpcy5nb29nbGVQYXltZW50Q2xpZW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBjaGVja291dERhdGEgPSB0aGlzLmNoZWNrb3V0LnJlcXVlc3QuZm9ybS5maWVsZHM7XG4gICAgY29uc3QgcGF5bWVudERhdGFSZXF1ZXN0ID0gSlNPTi5wYXJzZShcbiAgICAgIGNoZWNrb3V0RGF0YS5wYXltZW50RGF0YVJlcXVlc3RcbiAgICApIGFzIEdvb2dsZVBheVBheW1lbnRSZXF1ZXN0O1xuXG4gICAgcmV0dXJuIHRoaXMuZ29vZ2xlUGF5bWVudENsaWVudC5jcmVhdGVCdXR0b24oe1xuICAgICAgb25DbGljazogb25DbGlja0hhbmRsZXIsXG4gICAgICBhbGxvd2VkUGF5bWVudE1ldGhvZHM6IHBheW1lbnREYXRhUmVxdWVzdC5hbGxvd2VkUGF5bWVudE1ldGhvZHMsXG4gICAgICBidXR0b25TaXplTW9kZTogJ2ZpbGwnLFxuICAgICAgYnV0dG9uVHlwZTogJ2J1eScsXG4gICAgICBidXR0b25Db2xvcixcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBHb29nbGVQYXlDbGllbnQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLndpbmRvdy5nb29nbGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlbnZpcm9ubWVudCA9IHRoaXMuaXNTYW5kYm94ID8gJ1RFU1QnIDogJ1BST0RVQ1RJT04nO1xuXG4gICAgdGhpcy5nb29nbGVQYXltZW50Q2xpZW50ID1cbiAgICAgIG5ldyB0aGlzLndpbmRvdy5nb29nbGUucGF5bWVudHMuYXBpLlBheW1lbnRzQ2xpZW50KHtcbiAgICAgICAgZW52aXJvbm1lbnQsXG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb25Mb2FkU2NyaXB0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy53aW5kb3cuZ29vZ2xlKSB7XG4gICAgICBjb25zdCByZXRyeVRpbWVvdXQgPSAxMDAwO1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgaXNBdmFpbGFibGVHb29nbGVDbGllbnQgPSAhIXRoaXMud2luZG93Lmdvb2dsZTtcblxuICAgICAgICBpZiAoaXNBdmFpbGFibGVHb29nbGVDbGllbnQpIHtcbiAgICAgICAgICB0aGlzLnNldHVwR29vZ2xlUGF5Q2xpZW50KCk7XG5cbiAgICAgICAgICB0aGlzLnBheW1lbnRTeXN0ZW1Qcm9jZXNzaW5nU2VydmljZS5lbWl0SW5pdGlhbGl6ZSh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSwgcmV0cnlUaW1lb3V0KTtcblxuICAgICAgdGhyb3cgbmV3IEFwcEVycm9yKCdHb29nbGUgUGF5OiBnb29nbGUgbGlicmFyeSBub3cgaXMgYXZhaWxhYmxlJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0dXBHb29nbGVQYXlDbGllbnQoKTtcblxuICAgICAgdGhpcy5wYXltZW50U3lzdGVtUHJvY2Vzc2luZ1NlcnZpY2UuZW1pdEluaXRpYWxpemUodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc0NhbmNlbGxlZFN0YXR1cyhzdGF0dXNDb2RlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3RhdHVzQ29kZS50b0xvd2VyQ2FzZSgpID09PSAnY2FuY2VsZWQnO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,84 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import { filter } from 'rxjs/operators';
4
+ import { windowToken } from '../../window.token';
5
+ import { AppError } from '../../exceptions-handling/errors/app-error.class';
6
+ import * as i0 from "@angular/core";
7
+ export class PaymentSystemProcessingService {
8
+ constructor(window) {
9
+ this.window = window;
10
+ this.statusUrl = new BehaviorSubject('');
11
+ this.initialize = new BehaviorSubject(false);
12
+ }
13
+ get initialize$() {
14
+ return this.initialize.asObservable();
15
+ }
16
+ get status$() {
17
+ return this.statusUrl.asObservable().pipe(filter((status) => !!status));
18
+ }
19
+ emitStatusUrl(statusUrl) {
20
+ this.statusUrl.next(statusUrl);
21
+ }
22
+ emitInitialize(isInitialized) {
23
+ this.initialize.next(isInitialized);
24
+ }
25
+ getDecodedCheckout(base64checkoutData) {
26
+ try {
27
+ return JSON.parse(atob(base64checkoutData));
28
+ }
29
+ catch (error) {
30
+ throw new AppError('load script service: decode error');
31
+ }
32
+ }
33
+ loadScript(url, onLoad, addScriptCustomAttributes) {
34
+ this.initialize.next(false);
35
+ let script = this.window.document.createElement('script');
36
+ script.async = true;
37
+ script.src = url;
38
+ if (addScriptCustomAttributes) {
39
+ script = addScriptCustomAttributes(script);
40
+ }
41
+ this.window.document.body.append(script);
42
+ script.onload = () => {
43
+ try {
44
+ onLoad();
45
+ }
46
+ catch (error) {
47
+ let message = error;
48
+ if (error instanceof Error) {
49
+ message = error.message;
50
+ }
51
+ throw new AppError(`Pages: error during script onload handler: ${message}, url - ${url}`);
52
+ }
53
+ };
54
+ script.onerror = (event, source, lineno, colno, error) => {
55
+ const errorMessage = error ? error.message : '';
56
+ let eventMessage = event;
57
+ if (typeof event === 'object') {
58
+ eventMessage = JSON.stringify(event);
59
+ }
60
+ throw new AppError(`Pages: error during script onerror handler:
61
+ url - ${url},
62
+ event - ${eventMessage},
63
+ source - ${source ?? ''},
64
+ lineno - ${lineno ?? ''},
65
+ colno - ${colno ?? ''},
66
+ error - ${errorMessage}`);
67
+ };
68
+ }
69
+ isInitialized() {
70
+ return this.initialize.getValue();
71
+ }
72
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: PaymentSystemProcessingService, deps: [{ token: windowToken }], target: i0.ɵɵFactoryTarget.Injectable }); }
73
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: PaymentSystemProcessingService, providedIn: 'root' }); }
74
+ }
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: PaymentSystemProcessingService, decorators: [{
76
+ type: Injectable,
77
+ args: [{
78
+ providedIn: 'root',
79
+ }]
80
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
81
+ type: Inject,
82
+ args: [windowToken]
83
+ }] }] });
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudC1zeXN0ZW0tcHJvY2Vzc2luZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGF5bWVudC1jbGllbnQtY29yZS9zcmMvbGliL2NvcmUvc2RrLXBheW1lbnQtc3lzdGVtcy9wYXltZW50LXN5c3RlbXMvcGF5bWVudC1zeXN0ZW0tcHJvY2Vzc2luZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3hDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0RBQWtELENBQUM7O0FBTzVFLE1BQU0sT0FBTyw4QkFBOEI7SUFLekMsWUFDd0MsTUFBc0I7UUFBdEIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFMN0MsY0FBUyxHQUE0QixJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3RCxlQUFVLEdBQ3pCLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBSW5DLENBQUM7SUFFSixJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFTSxhQUFhLENBQUMsU0FBaUI7UUFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVNLGNBQWMsQ0FBQyxhQUFzQjtRQUMxQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU0sa0JBQWtCLENBQ3ZCLGtCQUEwQjtRQUUxQixJQUFJLENBQUM7WUFDSCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQU0sQ0FBQztRQUNuRCxDQUFDO1FBQUMsT0FBTyxLQUFjLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksUUFBUSxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFDMUQsQ0FBQztJQUNILENBQUM7SUFFTSxVQUFVLENBQ2YsR0FBVyxFQUNYLE1BQWtCLEVBQ2xCLHlCQUE0RTtRQUU1RSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLE1BQU0sR0FDUixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFL0MsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDcEIsTUFBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFFakIsSUFBSSx5QkFBeUIsRUFBRSxDQUFDO1lBQzlCLE1BQU0sR0FBRyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV6QyxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtZQUNuQixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxFQUFFLENBQUM7WUFDWCxDQUFDO1lBQUMsT0FBTyxLQUFjLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUVwQixJQUFJLEtBQUssWUFBWSxLQUFLLEVBQUUsQ0FBQztvQkFDM0IsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7Z0JBQzFCLENBQUM7Z0JBQ0QsTUFBTSxJQUFJLFFBQVEsQ0FDaEIsOENBQ0UsT0FDRixXQUFXLEdBQUcsRUFBRSxDQUNqQixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FDZixLQUFxQixFQUNyQixNQUFlLEVBQ2YsTUFBZSxFQUNmLEtBQWMsRUFDZCxLQUFhLEVBQ2IsRUFBRTtZQUNGLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBRWhELElBQUksWUFBWSxHQUFHLEtBQWUsQ0FBQztZQUVuQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUM5QixZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2QyxDQUFDO1lBRUQsTUFBTSxJQUFJLFFBQVEsQ0FDaEI7Z0JBQ1EsR0FBRztrQkFDRCxZQUFZO21CQUNYLE1BQU0sSUFBSSxFQUFFO21CQUNaLE1BQU0sSUFBSSxFQUFFO2tCQUNiLEtBQUssSUFBSSxFQUFFO2tCQUNYLFlBQVksRUFBRSxDQUN6QixDQUFDO1FBQ0osQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVNLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BDLENBQUM7OEdBbkdVLDhCQUE4QixrQkFNL0IsV0FBVztrSEFOViw4QkFBOEIsY0FGN0IsTUFBTTs7MkZBRVAsOEJBQThCO2tCQUgxQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBT0ksTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEdvb2dsZVBheUNoZWNrb3V0IH0gZnJvbSAnLi4vZ29vZ2xlLXBheS9nb29nbGUtcGF5LWNoZWNrb3V0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBFeHRlbmRlZFdpbmRvdyB9IGZyb20gJy4uLy4uL2V4dGVuZGVkLXdpbmRvdy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgd2luZG93VG9rZW4gfSBmcm9tICcuLi8uLi93aW5kb3cudG9rZW4nO1xuaW1wb3J0IHsgQXBwRXJyb3IgfSBmcm9tICcuLi8uLi9leGNlcHRpb25zLWhhbmRsaW5nL2Vycm9ycy9hcHAtZXJyb3IuY2xhc3MnO1xuXG5leHBvcnQgdHlwZSBDb21tb25DaGVja291dCA9IEdvb2dsZVBheUNoZWNrb3V0O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUGF5bWVudFN5c3RlbVByb2Nlc3NpbmdTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBzdGF0dXNVcmw6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW5pdGlhbGl6ZTogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID1cbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgQEluamVjdCh3aW5kb3dUb2tlbikgcHJpdmF0ZSByZWFkb25seSB3aW5kb3c6IEV4dGVuZGVkV2luZG93XG4gICkge31cblxuICBwdWJsaWMgZ2V0IGluaXRpYWxpemUkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemUuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN0YXR1cyQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5zdGF0dXNVcmwuYXNPYnNlcnZhYmxlKCkucGlwZShmaWx0ZXIoKHN0YXR1cykgPT4gISFzdGF0dXMpKTtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0U3RhdHVzVXJsKHN0YXR1c1VybDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0dXNVcmwubmV4dChzdGF0dXNVcmwpO1xuICB9XG5cbiAgcHVibGljIGVtaXRJbml0aWFsaXplKGlzSW5pdGlhbGl6ZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmluaXRpYWxpemUubmV4dChpc0luaXRpYWxpemVkKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREZWNvZGVkQ2hlY2tvdXQ8VCBleHRlbmRzIENvbW1vbkNoZWNrb3V0PihcbiAgICBiYXNlNjRjaGVja291dERhdGE6IHN0cmluZ1xuICApOiBUIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoYXRvYihiYXNlNjRjaGVja291dERhdGEpKSBhcyBUO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyBuZXcgQXBwRXJyb3IoJ2xvYWQgc2NyaXB0IHNlcnZpY2U6IGRlY29kZSBlcnJvcicpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsb2FkU2NyaXB0KFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9uTG9hZDogKCkgPT4gdm9pZCxcbiAgICBhZGRTY3JpcHRDdXN0b21BdHRyaWJ1dGVzPzogKHNjcmlwdDogSFRNTFNjcmlwdEVsZW1lbnQpID0+IEhUTUxTY3JpcHRFbGVtZW50XG4gICk6IHZvaWQge1xuICAgIHRoaXMuaW5pdGlhbGl6ZS5uZXh0KGZhbHNlKTtcbiAgICBsZXQgc2NyaXB0OiBIVE1MU2NyaXB0RWxlbWVudCA9XG4gICAgICB0aGlzLndpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcblxuICAgIHNjcmlwdC5hc3luYyA9IHRydWU7XG4gICAgc2NyaXB0LnNyYyA9IHVybDtcblxuICAgIGlmIChhZGRTY3JpcHRDdXN0b21BdHRyaWJ1dGVzKSB7XG4gICAgICBzY3JpcHQgPSBhZGRTY3JpcHRDdXN0b21BdHRyaWJ1dGVzKHNjcmlwdCk7XG4gICAgfVxuXG4gICAgdGhpcy53aW5kb3cuZG9jdW1lbnQuYm9keS5hcHBlbmQoc2NyaXB0KTtcblxuICAgIHNjcmlwdC5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBvbkxvYWQoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAgIGxldCBtZXNzYWdlID0gZXJyb3I7XG5cbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICBtZXNzYWdlID0gZXJyb3IubWVzc2FnZTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgQXBwRXJyb3IoXG4gICAgICAgICAgYFBhZ2VzOiBlcnJvciBkdXJpbmcgc2NyaXB0IG9ubG9hZCBoYW5kbGVyOiAke1xuICAgICAgICAgICAgbWVzc2FnZSBhcyBzdHJpbmdcbiAgICAgICAgICB9LCB1cmwgLSAke3VybH1gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHNjcmlwdC5vbmVycm9yID0gKFxuICAgICAgZXZlbnQ6IEV2ZW50IHwgc3RyaW5nLFxuICAgICAgc291cmNlPzogc3RyaW5nLFxuICAgICAgbGluZW5vPzogbnVtYmVyLFxuICAgICAgY29sbm8/OiBudW1iZXIsXG4gICAgICBlcnJvcj86IEVycm9yXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnJztcblxuICAgICAgbGV0IGV2ZW50TWVzc2FnZSA9IGV2ZW50IGFzIHN0cmluZztcblxuICAgICAgaWYgKHR5cGVvZiBldmVudCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgZXZlbnRNZXNzYWdlID0gSlNPTi5zdHJpbmdpZnkoZXZlbnQpO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBuZXcgQXBwRXJyb3IoXG4gICAgICAgIGBQYWdlczogZXJyb3IgZHVyaW5nIHNjcmlwdCBvbmVycm9yIGhhbmRsZXI6XG4gICAgICAgIHVybCAtICR7dXJsfSxcbiAgICAgICAgZXZlbnQgLSAke2V2ZW50TWVzc2FnZX0sXG4gICAgICAgIHNvdXJjZSAtICR7c291cmNlID8/ICcnfSxcbiAgICAgICAgbGluZW5vIC0gJHtsaW5lbm8gPz8gJyd9LFxuICAgICAgICBjb2xubyAtICR7Y29sbm8gPz8gJyd9LFxuICAgICAgICBlcnJvciAtICR7ZXJyb3JNZXNzYWdlfWBcbiAgICAgICk7XG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBpc0luaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmluaXRpYWxpemUuZ2V0VmFsdWUoKTtcbiAgfVxufVxuIl19