@adyen/adyen-web 6.11.0 → 6.12.1

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 (274) hide show
  1. package/dist/cjs/adyen.css +4 -4
  2. package/dist/cjs/adyen.css.map +1 -1
  3. package/dist/cjs/index.cjs +2 -2
  4. package/dist/cjs/index.cjs.map +1 -1
  5. package/dist/cjs/index.d.cts +166 -99
  6. package/dist/es/adyen.css +4 -4
  7. package/dist/es/adyen.css.map +1 -1
  8. package/dist/es/components/ANCV/components/ANCVAwait/config.js +1 -1
  9. package/dist/es/components/ANCV/components/ANCVAwait/config.js.map +1 -1
  10. package/dist/es/components/Ach/Ach.js +1 -1
  11. package/dist/es/components/Ach/Ach.js.map +1 -1
  12. package/dist/es/components/Ach/components/AccountTypeSelector.js +2 -0
  13. package/dist/es/components/Ach/components/AccountTypeSelector.js.map +1 -0
  14. package/dist/es/components/Ach/components/AchComponent.js +2 -0
  15. package/dist/es/components/Ach/components/AchComponent.js.map +1 -0
  16. package/dist/es/components/Ach/components/useSRPanelForACHErrors.js +2 -0
  17. package/dist/es/components/Ach/components/useSRPanelForACHErrors.js.map +1 -0
  18. package/dist/es/components/Ach/components/validate.js +2 -0
  19. package/dist/es/components/Ach/components/validate.js.map +1 -0
  20. package/dist/es/components/Ach/defaultProps.js +2 -0
  21. package/dist/es/components/Ach/defaultProps.js.map +1 -0
  22. package/dist/es/components/AmazonPay/utils.js +1 -1
  23. package/dist/es/components/ApplePay/ApplePay.js +1 -1
  24. package/dist/es/components/Atome/Atome.js +1 -1
  25. package/dist/es/components/BacsDD/components/BacsInput.js +1 -1
  26. package/dist/es/components/BcmcMobile/BcmcMobile.js +1 -1
  27. package/dist/es/components/Boleto/components/BoletoInput/validate.js +1 -1
  28. package/dist/es/components/Card/components/CardInput/CardInput.js +1 -1
  29. package/dist/es/components/Card/components/CardInput/components/CVC.js +1 -1
  30. package/dist/es/components/Card/components/CardInput/components/CardFields.js +1 -1
  31. package/dist/es/components/Card/components/CardInput/components/DataSfSpan.js +1 -1
  32. package/dist/es/components/Card/components/CardInput/components/ExpirationDate.js +1 -1
  33. package/dist/es/components/Card/components/CardInput/useSRPanelForCardInputErrors.js.map +1 -1
  34. package/dist/es/components/Card/components/CardInput/utils.js.map +1 -1
  35. package/dist/es/components/Card/components/CardInput/validate.js +1 -1
  36. package/dist/es/components/Donation/components/DonationComponent.js +1 -1
  37. package/dist/es/components/DuitNow/DuitNow.js +1 -1
  38. package/dist/es/components/GooglePay/GooglePay.js +1 -1
  39. package/dist/es/components/GooglePay/GooglePay.js.map +1 -1
  40. package/dist/es/components/PayNow/PayNow.js +1 -1
  41. package/dist/es/components/PayPal/constants.js +1 -1
  42. package/dist/es/components/PayPal/constants.js.map +1 -1
  43. package/dist/es/components/PayTo/PayTo.js.map +1 -1
  44. package/dist/es/components/Pix/PixInput/PixInput.js.map +1 -1
  45. package/dist/es/components/PromptPay/PromptPay.js +1 -1
  46. package/dist/es/components/Redirect/Redirect.js +1 -1
  47. package/dist/es/components/Riverty/Riverty.js +1 -1
  48. package/dist/es/components/Riverty/config.js +1 -1
  49. package/dist/es/components/ThreeDS2/ThreeDS2Challenge.js +1 -1
  50. package/dist/es/components/ThreeDS2/ThreeDS2DeviceFingerprint.js +1 -1
  51. package/dist/es/components/ThreeDS2/callSubmit3DS2Fingerprint.js +1 -1
  52. package/dist/es/components/ThreeDS2/components/Challenge/DoChallenge3DS2.js +1 -1
  53. package/dist/es/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js +1 -1
  54. package/dist/es/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js.map +1 -1
  55. package/dist/es/components/ThreeDS2/components/DeviceFingerprint/DoFingerprint3DS2.js +1 -1
  56. package/dist/es/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js +1 -1
  57. package/dist/es/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js.map +1 -1
  58. package/dist/es/components/WeChat/WeChat.js +1 -1
  59. package/dist/es/components/internal/Address/Address.js +1 -1
  60. package/dist/es/components/internal/Address/validate.formats.js.map +1 -1
  61. package/dist/es/components/internal/Countdown/utils.js.map +1 -1
  62. package/dist/es/components/internal/FormFields/Checkbox/Checkbox.js +1 -1
  63. package/dist/es/components/internal/FormFields/Checkbox/Checkbox.js.map +1 -1
  64. package/dist/es/components/internal/FormFields/InputDate/utils.js.map +1 -1
  65. package/dist/es/components/internal/FormFields/Select/components/SelectButton.js +1 -1
  66. package/dist/es/components/internal/FormFields/Select/components/SelectButton.js.map +1 -1
  67. package/dist/es/components/internal/IbanInput/validate.js +1 -1
  68. package/dist/es/components/internal/IssuerList/IssuerList.js +1 -1
  69. package/dist/es/components/internal/IssuerList/IssuerList.js.map +1 -1
  70. package/dist/es/components/internal/OpenInvoice/useSRPanelForOpenInvoiceErrors.js +1 -1
  71. package/dist/es/components/internal/OpenInvoice/useSRPanelForOpenInvoiceErrors.js.map +1 -1
  72. package/dist/es/components/internal/PhoneInput/PhoneInputForm.js +1 -1
  73. package/dist/es/components/internal/PhoneInput/PhoneInputForm.js.map +1 -1
  74. package/dist/es/components/internal/PhoneInput/validate.js +1 -1
  75. package/dist/es/components/internal/QRLoader/QRLoader.js +1 -1
  76. package/dist/es/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js +1 -1
  77. package/dist/es/components/internal/SecuredFields/SFP/SecuredFieldsProviderHandlers.js +1 -1
  78. package/dist/es/components/internal/SecuredFields/lib/CSF/extensions/createSecuredFields.js +1 -1
  79. package/dist/es/components/internal/SecuredFields/lib/CSF/extensions/handleConfig.js +1 -1
  80. package/dist/es/components/internal/SecuredFields/lib/CSF/extensions/handleConfig.js.map +1 -1
  81. package/dist/es/components/internal/SecuredFields/lib/CSF/extensions/handleTab.js +1 -1
  82. package/dist/es/components/internal/SecuredFields/lib/CSF/extensions/handleTab.js.map +1 -1
  83. package/dist/es/components/internal/SecuredFields/lib/CSF/partials/processAutoComplete.js.map +1 -1
  84. package/dist/es/components/internal/SecuredFields/lib/CSF/utils/iframes/postMessageValidation.js.map +1 -1
  85. package/dist/es/components/internal/SecuredFields/lib/CSF/utils/tabbing/utils.js.map +1 -1
  86. package/dist/es/components/internal/SecuredFields/lib/CSF/utils/userAgent.js +1 -1
  87. package/dist/es/components/internal/SecuredFields/lib/CSF/utils/userAgent.js.map +1 -1
  88. package/dist/es/components/internal/SecuredFields/lib/constants.js +1 -1
  89. package/dist/es/components/internal/SecuredFields/lib/constants.js.map +1 -1
  90. package/dist/es/components/internal/SecuredFields/lib/securedField/utils/processPlaceholders.js +1 -1
  91. package/dist/es/components/internal/SecuredFields/lib/securedField/utils/processPlaceholders.js.map +1 -1
  92. package/dist/es/components/internal/SecuredFields/lib/utilities/addContextTranslations.js +1 -1
  93. package/dist/es/components/internal/StoreDetails/StoreDetails.js +1 -1
  94. package/dist/es/components/internal/StoreDetails/StoreDetails.js.map +1 -1
  95. package/dist/es/components/internal/UIElement/UIElement.js +1 -1
  96. package/dist/es/components/internal/UIElement/UIElement.js.map +1 -1
  97. package/dist/es/core/Analytics/Analytics.js +1 -1
  98. package/dist/es/core/Analytics/Analytics.js.map +1 -1
  99. package/dist/es/core/Analytics/constants.js +1 -1
  100. package/dist/es/core/Analytics/constants.js.map +1 -1
  101. package/dist/es/core/Analytics/utils.js +1 -1
  102. package/dist/es/core/Errors/constants.js +1 -1
  103. package/dist/es/core/Errors/constants.js.map +1 -1
  104. package/dist/es/core/Errors/utils.js +1 -1
  105. package/dist/es/core/Errors/utils.js.map +1 -1
  106. package/dist/es/core/RiskModule/components/DeviceFingerprint/utils.js +1 -1
  107. package/dist/es/core/RiskModule/constants.js +1 -1
  108. package/dist/es/core/RiskModule/constants.js.map +1 -1
  109. package/dist/es/core/Services/analytics/collect-id.js +1 -1
  110. package/dist/es/core/Services/http.js +1 -1
  111. package/dist/es/core/core.js +1 -1
  112. package/dist/es/external/preact/dist/preact.js +1 -1
  113. package/dist/es/external/preact/dist/preact.js.map +1 -1
  114. package/dist/es/external/preact/hooks/dist/hooks.js.map +1 -1
  115. package/dist/es/index.d.ts +166 -99
  116. package/dist/es/index.js +1 -1
  117. package/dist/es/utils/Validator/defaultRules.js +1 -1
  118. package/dist/es/utils/base64.js.map +1 -1
  119. package/dist/es/utils/browserInfo.js +1 -1
  120. package/dist/es/utils/browserInfo.js.map +1 -1
  121. package/dist/es/utils/setFocus.js +1 -1
  122. package/dist/es/utils/setFocus.js.map +1 -1
  123. package/dist/es/utils/textUtils.js +1 -1
  124. package/dist/es/utils/textUtils.js.map +1 -1
  125. package/dist/es/utils/useForm/useForm.js +1 -1
  126. package/dist/es-legacy/adyen.css +4 -4
  127. package/dist/es-legacy/adyen.css.map +1 -1
  128. package/dist/es-legacy/components/ANCV/components/ANCVAwait/config.js +1 -1
  129. package/dist/es-legacy/components/ANCV/components/ANCVAwait/config.js.map +1 -1
  130. package/dist/es-legacy/components/Ach/Ach.js +1 -1
  131. package/dist/es-legacy/components/Ach/Ach.js.map +1 -1
  132. package/dist/es-legacy/components/Ach/components/AccountTypeSelector.js +2 -0
  133. package/dist/es-legacy/components/Ach/components/AccountTypeSelector.js.map +1 -0
  134. package/dist/es-legacy/components/Ach/components/AchComponent.js +2 -0
  135. package/dist/es-legacy/components/Ach/components/AchComponent.js.map +1 -0
  136. package/dist/es-legacy/components/Ach/components/useSRPanelForACHErrors.js +2 -0
  137. package/dist/es-legacy/components/Ach/components/useSRPanelForACHErrors.js.map +1 -0
  138. package/dist/es-legacy/components/Ach/components/validate.js +2 -0
  139. package/dist/es-legacy/components/Ach/components/validate.js.map +1 -0
  140. package/dist/es-legacy/components/Ach/defaultProps.js +2 -0
  141. package/dist/es-legacy/components/Ach/defaultProps.js.map +1 -0
  142. package/dist/es-legacy/components/AmazonPay/utils.js +1 -1
  143. package/dist/es-legacy/components/ApplePay/ApplePay.js +1 -1
  144. package/dist/es-legacy/components/Atome/Atome.js +1 -1
  145. package/dist/es-legacy/components/BacsDD/components/BacsInput.js +1 -1
  146. package/dist/es-legacy/components/BcmcMobile/BcmcMobile.js +1 -1
  147. package/dist/es-legacy/components/Boleto/components/BoletoInput/validate.js +1 -1
  148. package/dist/es-legacy/components/Card/components/CardInput/CardInput.js +1 -1
  149. package/dist/es-legacy/components/Card/components/CardInput/components/CVC.js +1 -1
  150. package/dist/es-legacy/components/Card/components/CardInput/components/CardFields.js +1 -1
  151. package/dist/es-legacy/components/Card/components/CardInput/components/DataSfSpan.js +1 -1
  152. package/dist/es-legacy/components/Card/components/CardInput/components/ExpirationDate.js +1 -1
  153. package/dist/es-legacy/components/Card/components/CardInput/useSRPanelForCardInputErrors.js.map +1 -1
  154. package/dist/es-legacy/components/Card/components/CardInput/utils.js.map +1 -1
  155. package/dist/es-legacy/components/Card/components/CardInput/validate.js +1 -1
  156. package/dist/es-legacy/components/Donation/components/DonationComponent.js +1 -1
  157. package/dist/es-legacy/components/DuitNow/DuitNow.js +1 -1
  158. package/dist/es-legacy/components/GooglePay/GooglePay.js +1 -1
  159. package/dist/es-legacy/components/GooglePay/GooglePay.js.map +1 -1
  160. package/dist/es-legacy/components/PayNow/PayNow.js +1 -1
  161. package/dist/es-legacy/components/PayPal/constants.js +1 -1
  162. package/dist/es-legacy/components/PayPal/constants.js.map +1 -1
  163. package/dist/es-legacy/components/PayTo/PayTo.js.map +1 -1
  164. package/dist/es-legacy/components/Pix/PixInput/PixInput.js.map +1 -1
  165. package/dist/es-legacy/components/PromptPay/PromptPay.js +1 -1
  166. package/dist/es-legacy/components/Redirect/Redirect.js +1 -1
  167. package/dist/es-legacy/components/Riverty/Riverty.js +1 -1
  168. package/dist/es-legacy/components/Riverty/config.js +1 -1
  169. package/dist/es-legacy/components/ThreeDS2/ThreeDS2Challenge.js +1 -1
  170. package/dist/es-legacy/components/ThreeDS2/ThreeDS2DeviceFingerprint.js +1 -1
  171. package/dist/es-legacy/components/ThreeDS2/callSubmit3DS2Fingerprint.js +1 -1
  172. package/dist/es-legacy/components/ThreeDS2/components/Challenge/DoChallenge3DS2.js +1 -1
  173. package/dist/es-legacy/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js +1 -1
  174. package/dist/es-legacy/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.js.map +1 -1
  175. package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/DoFingerprint3DS2.js +1 -1
  176. package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js +1 -1
  177. package/dist/es-legacy/components/ThreeDS2/components/DeviceFingerprint/PrepareFingerprint3DS2.js.map +1 -1
  178. package/dist/es-legacy/components/WeChat/WeChat.js +1 -1
  179. package/dist/es-legacy/components/internal/Address/Address.js +1 -1
  180. package/dist/es-legacy/components/internal/Address/validate.formats.js.map +1 -1
  181. package/dist/es-legacy/components/internal/BaseElement/BaseElement.js +1 -1
  182. package/dist/es-legacy/components/internal/BaseElement/BaseElement.js.map +1 -1
  183. package/dist/es-legacy/components/internal/ClickToPay/services/ClickToPayService.js +1 -1
  184. package/dist/es-legacy/components/internal/Countdown/utils.js.map +1 -1
  185. package/dist/es-legacy/components/internal/FormFields/Checkbox/Checkbox.js +1 -1
  186. package/dist/es-legacy/components/internal/FormFields/Checkbox/Checkbox.js.map +1 -1
  187. package/dist/es-legacy/components/internal/FormFields/InputBase.js +1 -1
  188. package/dist/es-legacy/components/internal/FormFields/InputBase.js.map +1 -1
  189. package/dist/es-legacy/components/internal/FormFields/InputDate/utils.js.map +1 -1
  190. package/dist/es-legacy/components/internal/FormFields/Select/components/SelectButton.js +1 -1
  191. package/dist/es-legacy/components/internal/FormFields/Select/components/SelectButton.js.map +1 -1
  192. package/dist/es-legacy/components/internal/IbanInput/validate.js +1 -1
  193. package/dist/es-legacy/components/internal/IssuerList/IssuerList.js +1 -1
  194. package/dist/es-legacy/components/internal/IssuerList/IssuerList.js.map +1 -1
  195. package/dist/es-legacy/components/internal/OpenInvoice/useSRPanelForOpenInvoiceErrors.js +1 -1
  196. package/dist/es-legacy/components/internal/OpenInvoice/useSRPanelForOpenInvoiceErrors.js.map +1 -1
  197. package/dist/es-legacy/components/internal/PhoneInput/PhoneInputForm.js +1 -1
  198. package/dist/es-legacy/components/internal/QRLoader/QRLoader.js +1 -1
  199. package/dist/es-legacy/components/internal/SecuredFields/SFP/SecuredFieldsProvider.js +1 -1
  200. package/dist/es-legacy/components/internal/SecuredFields/SFP/SecuredFieldsProviderHandlers.js +1 -1
  201. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/createSecuredFields.js +1 -1
  202. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/createSecuredFields.js.map +1 -1
  203. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/handleConfig.js +1 -1
  204. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/handleConfig.js.map +1 -1
  205. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/handleTab.js +1 -1
  206. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/extensions/handleTab.js.map +1 -1
  207. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/partials/processAutoComplete.js.map +1 -1
  208. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/utils/iframes/postMessageValidation.js.map +1 -1
  209. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/utils/tabbing/utils.js.map +1 -1
  210. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/utils/userAgent.js +1 -1
  211. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/utils/userAgent.js.map +1 -1
  212. package/dist/es-legacy/components/internal/SecuredFields/lib/constants.js +1 -1
  213. package/dist/es-legacy/components/internal/SecuredFields/lib/constants.js.map +1 -1
  214. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/utils/processPlaceholders.js +1 -1
  215. package/dist/es-legacy/components/internal/SecuredFields/lib/securedField/utils/processPlaceholders.js.map +1 -1
  216. package/dist/es-legacy/components/internal/SecuredFields/lib/utilities/addContextTranslations.js +1 -1
  217. package/dist/es-legacy/components/internal/StoreDetails/StoreDetails.js +1 -1
  218. package/dist/es-legacy/components/internal/StoreDetails/StoreDetails.js.map +1 -1
  219. package/dist/es-legacy/components/internal/UIElement/UIElement.js +1 -1
  220. package/dist/es-legacy/components/internal/UIElement/UIElement.js.map +1 -1
  221. package/dist/es-legacy/core/Analytics/Analytics.js +1 -1
  222. package/dist/es-legacy/core/Analytics/Analytics.js.map +1 -1
  223. package/dist/es-legacy/core/Analytics/constants.js +1 -1
  224. package/dist/es-legacy/core/Analytics/constants.js.map +1 -1
  225. package/dist/es-legacy/core/Analytics/utils.js +1 -1
  226. package/dist/es-legacy/core/Errors/constants.js +1 -1
  227. package/dist/es-legacy/core/Errors/constants.js.map +1 -1
  228. package/dist/es-legacy/core/Errors/utils.js +1 -1
  229. package/dist/es-legacy/core/Errors/utils.js.map +1 -1
  230. package/dist/es-legacy/core/RiskModule/RiskModule.js +1 -1
  231. package/dist/es-legacy/core/RiskModule/components/DeviceFingerprint/utils.js +1 -1
  232. package/dist/es-legacy/core/RiskModule/constants.js +1 -1
  233. package/dist/es-legacy/core/RiskModule/constants.js.map +1 -1
  234. package/dist/es-legacy/core/Services/analytics/collect-id.js +1 -1
  235. package/dist/es-legacy/core/core.js +1 -1
  236. package/dist/es-legacy/external/preact/dist/preact.js +1 -1
  237. package/dist/es-legacy/external/preact/dist/preact.js.map +1 -1
  238. package/dist/es-legacy/external/preact/hooks/dist/hooks.js.map +1 -1
  239. package/dist/es-legacy/index.js +1 -1
  240. package/dist/es-legacy/utils/Validator/defaultRules.js +1 -1
  241. package/dist/es-legacy/utils/base64.js.map +1 -1
  242. package/dist/es-legacy/utils/browserInfo.js +1 -1
  243. package/dist/es-legacy/utils/browserInfo.js.map +1 -1
  244. package/dist/es-legacy/utils/setFocus.js +1 -1
  245. package/dist/es-legacy/utils/setFocus.js.map +1 -1
  246. package/dist/es-legacy/utils/textUtils.js +1 -1
  247. package/dist/es-legacy/utils/textUtils.js.map +1 -1
  248. package/dist/es-legacy/utils/useForm/useForm.js +1 -1
  249. package/package.json +23 -23
  250. package/styles/adyen.css +4 -4
  251. package/dist/es/components/Ach/components/AchInput/AchInput.js +0 -2
  252. package/dist/es/components/Ach/components/AchInput/AchInput.js.map +0 -1
  253. package/dist/es/components/Ach/components/AchInput/components/AchSFInput.js +0 -2
  254. package/dist/es/components/Ach/components/AchInput/components/AchSFInput.js.map +0 -1
  255. package/dist/es/components/Ach/components/AchInput/components/AchSecuredFields.js +0 -2
  256. package/dist/es/components/Ach/components/AchInput/components/AchSecuredFields.js.map +0 -1
  257. package/dist/es/components/Ach/components/AchInput/defaultProps.js +0 -2
  258. package/dist/es/components/Ach/components/AchInput/defaultProps.js.map +0 -1
  259. package/dist/es/components/Ach/components/AchInput/defaultStyles.js +0 -2
  260. package/dist/es/components/Ach/components/AchInput/defaultStyles.js.map +0 -1
  261. package/dist/es/components/internal/SecuredFields/lib/CSF/utils/tabbing/tabScenarioACH.js +0 -2
  262. package/dist/es/components/internal/SecuredFields/lib/CSF/utils/tabbing/tabScenarioACH.js.map +0 -1
  263. package/dist/es-legacy/components/Ach/components/AchInput/AchInput.js +0 -2
  264. package/dist/es-legacy/components/Ach/components/AchInput/AchInput.js.map +0 -1
  265. package/dist/es-legacy/components/Ach/components/AchInput/components/AchSFInput.js +0 -2
  266. package/dist/es-legacy/components/Ach/components/AchInput/components/AchSFInput.js.map +0 -1
  267. package/dist/es-legacy/components/Ach/components/AchInput/components/AchSecuredFields.js +0 -2
  268. package/dist/es-legacy/components/Ach/components/AchInput/components/AchSecuredFields.js.map +0 -1
  269. package/dist/es-legacy/components/Ach/components/AchInput/defaultProps.js +0 -2
  270. package/dist/es-legacy/components/Ach/components/AchInput/defaultProps.js.map +0 -1
  271. package/dist/es-legacy/components/Ach/components/AchInput/defaultStyles.js +0 -2
  272. package/dist/es-legacy/components/Ach/components/AchInput/defaultStyles.js.map +0 -1
  273. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/utils/tabbing/tabScenarioACH.js +0 -2
  274. package/dist/es-legacy/components/internal/SecuredFields/lib/CSF/utils/tabbing/tabScenarioACH.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as e}from"../internal/UIElement/UIElement.js";import o from"./GooglePayService.js";import s from"./components/GooglePayButton.js";import r from"./defaultProps.js";import{getGooglePayLocale as n,formatGooglePayContactToAdyenAddressFormat as i}from"./utils.js";import a from"../../utils/browserInfo.js";import h from"../../core/Errors/AdyenCheckoutError.js";import{TxVariants as l}from"../tx-variants.js";import{sanitizeResponse as p,verifyPaymentDidNotFail as d}from"../internal/UIElement/utils.js";import{ANALYTICS_SELECTED_STR as y,ANALYTICS_INSTANT_PAYMENT_BUTTON as u}from"../../core/Analytics/constants.js";function g(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}class c extends e{formatProps(t){const e=t.buttonSizeMode??(t.isDropin?"fill":"static"),o=n(t.buttonLocale??t.i18n?.locale),s=[...t.callbackIntents,"PAYMENT_AUTHORIZATION"];return{...t,configuration:t.configuration,buttonSizeMode:e,buttonLocale:o,callbackIntents:s}}formatData(){const{googlePayCardNetwork:t,googlePayToken:e,billingAddress:o,deliveryAddress:s}=this.state,{isExpress:r}=this.props;return{paymentMethod:{type:this.type,googlePayCardNetwork:t,googlePayToken:e,...r&&{subtype:"express"}},browserInfo:this.browserInfo,origin:!!window&&window.location.origin,...o&&{billingAddress:o},...s&&{deliveryAddress:s}}}submitAnalytics(t){super.submitAnalytics({...t},this.props)}showGooglePayPaymentSheet(){this.googlePay.initiatePayment(this.props,this.core.options.countryCode).catch((t=>{this.handleError(new h("CANCELED"===t.statusCode?"CANCEL":"ERROR",t.toString(),{cause:t}))}))}async handleAuthorization(){return new Promise(((t,e)=>{this.props.onAuthorized||t();const{authorizedEvent:o,billingAddress:s,deliveryAddress:r}=this.state;this.props.onAuthorized({authorizedEvent:o,...s&&{billingAddress:s},...r&&{deliveryAddress:r}},{resolve:t,reject:e})})).catch((t=>{const e={error:{googlePayError:t}};return Promise.reject(e)}))}get isValid(){return!!this.state.googlePayToken}async isAvailable(){return this.isReadyToPay().then((t=>{if(!t.result)throw new h("ERROR","GooglePay is not available");if(!1===t.paymentMethodPresent)throw new h("ERROR","GooglePay - No paymentMethodPresent");return Promise.resolve()})).catch((t=>Promise.reject(t)))}get browserInfo(){return a()}get icon(){return this.props.icon??this.resources.getImage()("googlepay")}render(){return this.props.showPayButton?t(s,{buttonColor:this.props.buttonColor,buttonType:this.props.buttonType,buttonSizeMode:this.props.buttonSizeMode,buttonLocale:this.props.buttonLocale,buttonRootNode:this.props.buttonRootNode,buttonRadius:this.props.buttonRadius,paymentsClient:this.googlePay.paymentsClient,onClick:this.submit}):null}constructor(t,e){super(t,e),g(this,"googlePay",void 0),g(this,"submit",(()=>{this.props.isInstantPayment&&this.submitAnalytics({type:y,target:u}),new Promise(((t,e)=>this.props.onClick(t,e))).then(this.showGooglePayPaymentSheet).catch((()=>{}))})),g(this,"onPaymentAuthorized",(async t=>{const e=i(t.paymentMethodData.info.billingAddress),o=i(t.shippingAddress,!0);return this.setState({authorizedEvent:t,googlePayToken:t.paymentMethodData.tokenizationData.token,googlePayCardNetwork:t.paymentMethodData.info.cardNetwork,...e&&{billingAddress:e},...o&&{deliveryAddress:o}}),new Promise((t=>{this.handleAuthorization().then(this.makePaymentsCall).then(p).then(d).then((e=>(t({transactionState:"SUCCESS"}),e))).then((t=>{this.handleResponse(t)})).catch((e=>{this.setElementStatus("ready");const o=e?.error?.googlePayError,s=this.props.i18n.get("error.subtitle.payment"),r="string"==typeof o?{intent:"PAYMENT_AUTHORIZATION",reason:"OTHER_ERROR",message:o||s}:{intent:o?.intent||"PAYMENT_AUTHORIZATION",reason:o?.reason||"OTHER_ERROR",message:o?.message||s};t({transactionState:"ERROR",error:r});const n={...e,error:{googlePayError:r}};this.handleFailedResult(n)}))}))})),g(this,"isReadyToPay",(()=>this.googlePay.isReadyToPay(this.props))),g(this,"prefetch",(()=>this.googlePay.prefetchPaymentData(this.props,this.core.options.countryCode))),this.handleAuthorization=this.handleAuthorization.bind(this),this.showGooglePayPaymentSheet=this.showGooglePayPaymentSheet.bind(this);const{isExpress:s,paymentDataCallbacks:r}=this.props;if(!1===s&&r?.onPaymentDataChanged)throw new h("IMPLEMENTATION_ERROR",'GooglePay - You must set "isExpress" flag to "true" in order to use "onPaymentDataChanged" callback');if(!this.props.configuration.merchantId)throw new h("IMPLEMENTATION_ERROR","GooglePay - Missing merchantId. Please ensure that it is correctly configured in your customer area.");this.googlePay=new o(this.props.environment,{...s&&r?.onPaymentDataChanged&&{onPaymentDataChanged:r.onPaymentDataChanged},onPaymentAuthorized:this.onPaymentAuthorized})}}g(c,"type",l.googlepay),g(c,"txVariants",[l.googlepay,l.paywithgoogle]),g(c,"defaultProps",r);export{c as default};
1
+ import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as e}from"../internal/UIElement/UIElement.js";import o from"./GooglePayService.js";import s from"./components/GooglePayButton.js";import r from"./defaultProps.js";import{getGooglePayLocale as n,formatGooglePayContactToAdyenAddressFormat as i}from"./utils.js";import a from"../../utils/browserInfo.js";import h from"../../core/Errors/AdyenCheckoutError.js";import{TxVariants as l}from"../tx-variants.js";import{sanitizeResponse as p,verifyPaymentDidNotFail as d}from"../internal/UIElement/utils.js";import{ANALYTICS_INSTANT_PAYMENT_BUTTON as y,ANALYTICS_SELECTED_STR as u}from"../../core/Analytics/constants.js";function g(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}class c extends e{getPaymentMethodFromPaymentMethodsResponse(t){return this.core.paymentMethodsResponse.find(t||this.constructor.type)||this.core.paymentMethodsResponse.find(l.paywithgoogle)}formatProps(t){const e=t.buttonSizeMode??(t.isDropin?"fill":"static"),o=n(t.buttonLocale??t.i18n?.locale),s=[...t.callbackIntents,"PAYMENT_AUTHORIZATION"];return{...t,configuration:t.configuration,buttonSizeMode:e,buttonLocale:o,callbackIntents:s}}formatData(){const{googlePayCardNetwork:t,googlePayToken:e,billingAddress:o,deliveryAddress:s}=this.state,{isExpress:r}=this.props;return{paymentMethod:{type:this.type,googlePayCardNetwork:t,googlePayToken:e,...r&&{subtype:"express"}},browserInfo:this.browserInfo,origin:!!window&&window.location.origin,...o&&{billingAddress:o},...s&&{deliveryAddress:s}}}submitAnalytics(t){super.submitAnalytics({...t},this.props)}showGooglePayPaymentSheet(){this.googlePay.initiatePayment(this.props,this.core.options.countryCode).catch((t=>{this.handleError(new h("CANCELED"===t.statusCode?"CANCEL":"ERROR",t.toString(),{cause:t}))}))}async handleAuthorization(){return new Promise(((t,e)=>{this.props.onAuthorized||t();const{authorizedEvent:o,billingAddress:s,deliveryAddress:r}=this.state;this.props.onAuthorized({authorizedEvent:o,...s&&{billingAddress:s},...r&&{deliveryAddress:r}},{resolve:t,reject:e})})).catch((t=>{const e={error:{googlePayError:t}};return Promise.reject(e)}))}get isValid(){return!!this.state.googlePayToken}async isAvailable(){return this.isReadyToPay().then((t=>{if(!t.result)throw new h("ERROR","GooglePay is not available");if(!1===t.paymentMethodPresent)throw new h("ERROR","GooglePay - No paymentMethodPresent");return Promise.resolve()})).catch((t=>Promise.reject(t)))}get browserInfo(){return a()}get icon(){return this.props.icon??this.resources.getImage()("googlepay")}render(){return this.props.showPayButton?t(s,{buttonColor:this.props.buttonColor,buttonType:this.props.buttonType,buttonSizeMode:this.props.buttonSizeMode,buttonLocale:this.props.buttonLocale,buttonRootNode:this.props.buttonRootNode,buttonRadius:this.props.buttonRadius,paymentsClient:this.googlePay.paymentsClient,onClick:this.submit}):null}constructor(t,e){super(t,e),g(this,"googlePay",void 0),g(this,"submit",(()=>{this.props.isInstantPayment&&this.submitAnalytics({type:u,target:y}),new Promise(((t,e)=>this.props.onClick(t,e))).then(this.showGooglePayPaymentSheet).catch((()=>{}))})),g(this,"onPaymentAuthorized",(async t=>{const e=i(t.paymentMethodData.info.billingAddress),o=i(t.shippingAddress,!0);return this.setState({authorizedEvent:t,googlePayToken:t.paymentMethodData.tokenizationData.token,googlePayCardNetwork:t.paymentMethodData.info.cardNetwork,...e&&{billingAddress:e},...o&&{deliveryAddress:o}}),new Promise((t=>{this.handleAuthorization().then(this.makePaymentsCall).then(p).then(d).then((e=>(t({transactionState:"SUCCESS"}),e))).then((t=>{this.handleResponse(t)})).catch((e=>{this.setElementStatus("ready");const o=e?.error?.googlePayError,s=this.props.i18n.get("error.subtitle.payment"),r="string"==typeof o?{intent:"PAYMENT_AUTHORIZATION",reason:"OTHER_ERROR",message:o||s}:{intent:o?.intent||"PAYMENT_AUTHORIZATION",reason:o?.reason||"OTHER_ERROR",message:o?.message||s};t({transactionState:"ERROR",error:r});const n={...e,error:{googlePayError:r}};this.handleFailedResult(n)}))}))})),g(this,"isReadyToPay",(()=>this.googlePay.isReadyToPay(this.props))),g(this,"prefetch",(()=>this.googlePay.prefetchPaymentData(this.props,this.core.options.countryCode))),this.handleAuthorization=this.handleAuthorization.bind(this),this.showGooglePayPaymentSheet=this.showGooglePayPaymentSheet.bind(this);const{isExpress:s,paymentDataCallbacks:r}=this.props;if(!1===s&&r?.onPaymentDataChanged)throw new h("IMPLEMENTATION_ERROR",'GooglePay - You must set "isExpress" flag to "true" in order to use "onPaymentDataChanged" callback');if(!this.props.configuration.merchantId)throw new h("IMPLEMENTATION_ERROR","GooglePay - Missing merchantId. Please ensure that it is correctly configured in your customer area.");this.googlePay=new o(this.props.environment,{...s&&r?.onPaymentDataChanged&&{onPaymentDataChanged:r.onPaymentDataChanged},onPaymentAuthorized:this.onPaymentAuthorized})}}g(c,"type",l.googlepay),g(c,"txVariants",[l.googlepay,l.paywithgoogle]),g(c,"defaultProps",r);export{c as default};
2
2
  //# sourceMappingURL=GooglePay.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GooglePay.js","sources":["../../../../src/components/GooglePay/GooglePay.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport GooglePayService from './GooglePayService';\nimport GooglePayButton from './components/GooglePayButton';\nimport defaultProps from './defaultProps';\nimport { formatGooglePayContactToAdyenAddressFormat, getGooglePayLocale } from './utils';\nimport collectBrowserInfo from '../../utils/browserInfo';\nimport AdyenCheckoutError from '../../core/Errors/AdyenCheckoutError';\nimport { TxVariants } from '../tx-variants';\nimport { sanitizeResponse, verifyPaymentDidNotFail } from '../internal/UIElement/utils';\nimport { ANALYTICS_INSTANT_PAYMENT_BUTTON, ANALYTICS_SELECTED_STR } from '../../core/Analytics/constants';\nimport { SendAnalyticsObject } from '../../core/Analytics/types';\n\nimport type { AddressData, BrowserInfo, PaymentResponseData, RawPaymentResponse } from '../../types/global-types';\nimport type { GooglePayConfiguration } from './types';\nimport type { ICore } from '../../core/types';\n\nclass GooglePay extends UIElement<GooglePayConfiguration> {\n public static type = TxVariants.googlepay;\n public static txVariants = [TxVariants.googlepay, TxVariants.paywithgoogle];\n public static defaultProps = defaultProps;\n\n protected readonly googlePay;\n\n constructor(checkout: ICore, props?: GooglePayConfiguration) {\n super(checkout, props);\n this.handleAuthorization = this.handleAuthorization.bind(this);\n this.showGooglePayPaymentSheet = this.showGooglePayPaymentSheet.bind(this);\n\n const { isExpress, paymentDataCallbacks } = this.props;\n\n if (isExpress === false && paymentDataCallbacks?.onPaymentDataChanged) {\n throw new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n 'GooglePay - You must set \"isExpress\" flag to \"true\" in order to use \"onPaymentDataChanged\" callback'\n );\n }\n\n if (!this.props.configuration.merchantId) {\n throw new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n 'GooglePay - Missing merchantId. Please ensure that it is correctly configured in your customer area.'\n );\n }\n\n this.googlePay = new GooglePayService(this.props.environment, {\n ...(isExpress && paymentDataCallbacks?.onPaymentDataChanged && { onPaymentDataChanged: paymentDataCallbacks.onPaymentDataChanged }),\n onPaymentAuthorized: this.onPaymentAuthorized\n });\n }\n\n protected override formatProps(props): GooglePayConfiguration {\n const buttonSizeMode = props.buttonSizeMode ?? (props.isDropin ? 'fill' : 'static');\n const buttonLocale = getGooglePayLocale(props.buttonLocale ?? props.i18n?.locale);\n\n const callbackIntents: google.payments.api.CallbackIntent[] = [...props.callbackIntents, 'PAYMENT_AUTHORIZATION'];\n\n return {\n ...props,\n configuration: props.configuration,\n buttonSizeMode,\n buttonLocale,\n callbackIntents\n };\n }\n\n /**\n * Formats the component data output\n */\n protected override formatData() {\n const { googlePayCardNetwork, googlePayToken, billingAddress, deliveryAddress } = this.state;\n const { isExpress } = this.props;\n\n return {\n paymentMethod: {\n type: this.type,\n googlePayCardNetwork,\n googlePayToken,\n ...(isExpress && { subtype: 'express' })\n },\n browserInfo: this.browserInfo,\n origin: !!window && window.location.origin,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n };\n }\n\n protected submitAnalytics(analyticsObj: SendAnalyticsObject) {\n // Analytics will need to know about this.props.isExpress & this.props.expressPage\n super.submitAnalytics({ ...analyticsObj }, this.props);\n }\n\n /**\n * Displays the Google Pay payment sheet overlay\n */\n private showGooglePayPaymentSheet() {\n this.googlePay.initiatePayment(this.props, this.core.options.countryCode).catch((error: google.payments.api.PaymentsError) => {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n this.handleError(new AdyenCheckoutError(error.statusCode === 'CANCELED' ? 'CANCEL' : 'ERROR', error.toString(), { cause: error }));\n });\n }\n\n public override submit = () => {\n if (this.props.isInstantPayment) {\n this.submitAnalytics({ type: ANALYTICS_SELECTED_STR, target: ANALYTICS_INSTANT_PAYMENT_BUTTON });\n }\n\n new Promise<void>((resolve, reject) => this.props.onClick(resolve, reject)).then(this.showGooglePayPaymentSheet).catch(() => {\n // Swallow exception triggered by onClick reject\n });\n };\n\n /**\n * Method called when the payment is authorized in the payment sheet\n *\n * @see https://developers.google.com/pay/api/web/reference/client#onPaymentAuthorized\n **/\n private onPaymentAuthorized = async (paymentData: google.payments.api.PaymentData): Promise<google.payments.api.PaymentAuthorizationResult> => {\n const billingAddress: AddressData = formatGooglePayContactToAdyenAddressFormat(paymentData.paymentMethodData.info.billingAddress);\n const deliveryAddress: AddressData = formatGooglePayContactToAdyenAddressFormat(paymentData.shippingAddress, true);\n\n this.setState({\n authorizedEvent: paymentData,\n googlePayToken: paymentData.paymentMethodData.tokenizationData.token,\n googlePayCardNetwork: paymentData.paymentMethodData.info.cardNetwork,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n });\n\n return new Promise<google.payments.api.PaymentAuthorizationResult>(resolve => {\n this.handleAuthorization()\n .then(this.makePaymentsCall)\n .then(sanitizeResponse)\n .then(verifyPaymentDidNotFail)\n .then((paymentResponse: PaymentResponseData) => {\n resolve({ transactionState: 'SUCCESS' });\n return paymentResponse;\n })\n .then(paymentResponse => {\n this.handleResponse(paymentResponse);\n })\n .catch((paymentResponse?: RawPaymentResponse) => {\n this.setElementStatus('ready');\n\n const googlePayError = paymentResponse?.error?.googlePayError;\n const fallbackMessage = this.props.i18n.get('error.subtitle.payment');\n\n const error: google.payments.api.PaymentDataError =\n typeof googlePayError === 'string' || undefined\n ? {\n intent: 'PAYMENT_AUTHORIZATION',\n reason: 'OTHER_ERROR',\n message: (googlePayError as string) || fallbackMessage\n }\n : {\n intent: googlePayError?.intent || 'PAYMENT_AUTHORIZATION',\n reason: googlePayError?.reason || 'OTHER_ERROR',\n message: googlePayError?.message || fallbackMessage\n };\n\n resolve({\n transactionState: 'ERROR',\n error\n });\n\n const responseWithError = {\n ...paymentResponse,\n error: {\n googlePayError: error\n }\n };\n\n this.handleFailedResult(responseWithError);\n });\n });\n };\n\n /**\n * Call the 'onAuthorized' callback if available.\n * Must be resolved/reject for the payment flow to continue\n */\n private async handleAuthorization(): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n if (!this.props.onAuthorized) {\n resolve();\n }\n\n const { authorizedEvent, billingAddress, deliveryAddress } = this.state;\n\n this.props.onAuthorized(\n {\n authorizedEvent,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n },\n { resolve, reject }\n );\n }).catch((error?: google.payments.api.PaymentDataError | string) => {\n // Format error in a way that the 'catch' of the 'onPaymentAuthorize' block accepts it\n const data = { error: { googlePayError: error } };\n return Promise.reject(data);\n });\n }\n\n /**\n * Validation\n */\n get isValid(): boolean {\n return !!this.state.googlePayToken;\n }\n\n /**\n * Determine a shopper's ability to return a form of payment from the Google Pay API.\n */\n public override async isAvailable(): Promise<void> {\n return this.isReadyToPay()\n .then(response => {\n if (!response.result) {\n throw new AdyenCheckoutError('ERROR', 'GooglePay is not available');\n }\n\n if (response.paymentMethodPresent === false) {\n throw new AdyenCheckoutError('ERROR', 'GooglePay - No paymentMethodPresent');\n }\n\n return Promise.resolve();\n })\n .catch(error => {\n return Promise.reject(error);\n });\n }\n\n /**\n * Determine a shopper's ability to return a form of payment from the Google Pay API.\n */\n public isReadyToPay = (): Promise<google.payments.api.IsReadyToPayResponse> => {\n return this.googlePay.isReadyToPay(this.props);\n };\n\n /**\n * Use this method to prefetch a PaymentDataRequest configuration to improve loadPaymentData execution time on later user interaction. No value is returned.\n */\n public prefetch = (): void => {\n return this.googlePay.prefetchPaymentData(this.props, this.core.options.countryCode);\n };\n\n get browserInfo(): BrowserInfo {\n return collectBrowserInfo();\n }\n\n get icon(): string {\n return this.props.icon ?? this.resources.getImage()('googlepay');\n }\n\n render() {\n if (this.props.showPayButton) {\n return (\n <GooglePayButton\n buttonColor={this.props.buttonColor}\n buttonType={this.props.buttonType}\n buttonSizeMode={this.props.buttonSizeMode}\n buttonLocale={this.props.buttonLocale}\n buttonRootNode={this.props.buttonRootNode}\n buttonRadius={this.props.buttonRadius}\n paymentsClient={this.googlePay.paymentsClient}\n onClick={this.submit}\n />\n );\n }\n\n return null;\n }\n}\n\nexport default GooglePay;\n"],"names":["GooglePay","UIElement","formatProps","props","buttonSizeMode","isDropin","buttonLocale","getGooglePayLocale","i18n","locale","callbackIntents","configuration","formatData","googlePayCardNetwork","googlePayToken","billingAddress","deliveryAddress","this","state","isExpress","paymentMethod","type","subtype","browserInfo","origin","window","location","submitAnalytics","analyticsObj","super","showGooglePayPaymentSheet","googlePay","initiatePayment","core","options","countryCode","catch","error","handleError","AdyenCheckoutError","statusCode","toString","cause","handleAuthorization","Promise","resolve","reject","onAuthorized","authorizedEvent","data","googlePayError","isValid","isAvailable","isReadyToPay","then","response","result","paymentMethodPresent","collectBrowserInfo","icon","resources","getImage","render","showPayButton","h","GooglePayButton","buttonColor","buttonType","buttonRootNode","buttonRadius","paymentsClient","onClick","submit","constructor","checkout","_define_property","isInstantPayment","ANALYTICS_SELECTED_STR","target","ANALYTICS_INSTANT_PAYMENT_BUTTON","onPaymentAuthorized","async","paymentData","formatGooglePayContactToAdyenAddressFormat","paymentMethodData","info","shippingAddress","setState","tokenizationData","token","cardNetwork","makePaymentsCall","sanitizeResponse","verifyPaymentDidNotFail","paymentResponse","transactionState","handleResponse","setElementStatus","fallbackMessage","get","intent","reason","message","responseWithError","handleFailedResult","prefetch","prefetchPaymentData","bind","paymentDataCallbacks","onPaymentDataChanged","merchantId","GooglePayService","environment","TxVariants","googlepay","txVariants","paywithgoogle","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"GooglePay.js","sources":["../../../../src/components/GooglePay/GooglePay.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport GooglePayService from './GooglePayService';\nimport GooglePayButton from './components/GooglePayButton';\nimport defaultProps from './defaultProps';\nimport { formatGooglePayContactToAdyenAddressFormat, getGooglePayLocale } from './utils';\nimport collectBrowserInfo from '../../utils/browserInfo';\nimport AdyenCheckoutError from '../../core/Errors/AdyenCheckoutError';\nimport { TxVariants } from '../tx-variants';\nimport { sanitizeResponse, verifyPaymentDidNotFail } from '../internal/UIElement/utils';\nimport { ANALYTICS_INSTANT_PAYMENT_BUTTON, ANALYTICS_SELECTED_STR } from '../../core/Analytics/constants';\nimport { SendAnalyticsObject } from '../../core/Analytics/types';\n\nimport type { AddressData, BrowserInfo, PaymentMethod, PaymentResponseData, RawPaymentResponse } from '../../types/global-types';\nimport type { GooglePayConfiguration } from './types';\nimport type { ICore } from '../../core/types';\n\nclass GooglePay extends UIElement<GooglePayConfiguration> {\n public static type = TxVariants.googlepay;\n public static txVariants = [TxVariants.googlepay, TxVariants.paywithgoogle];\n public static defaultProps = defaultProps;\n\n protected readonly googlePay;\n\n constructor(checkout: ICore, props?: GooglePayConfiguration) {\n super(checkout, props);\n this.handleAuthorization = this.handleAuthorization.bind(this);\n this.showGooglePayPaymentSheet = this.showGooglePayPaymentSheet.bind(this);\n\n const { isExpress, paymentDataCallbacks } = this.props;\n\n if (isExpress === false && paymentDataCallbacks?.onPaymentDataChanged) {\n throw new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n 'GooglePay - You must set \"isExpress\" flag to \"true\" in order to use \"onPaymentDataChanged\" callback'\n );\n }\n\n if (!this.props.configuration.merchantId) {\n throw new AdyenCheckoutError(\n 'IMPLEMENTATION_ERROR',\n 'GooglePay - Missing merchantId. Please ensure that it is correctly configured in your customer area.'\n );\n }\n\n this.googlePay = new GooglePayService(this.props.environment, {\n ...(isExpress && paymentDataCallbacks?.onPaymentDataChanged && { onPaymentDataChanged: paymentDataCallbacks.onPaymentDataChanged }),\n onPaymentAuthorized: this.onPaymentAuthorized\n });\n }\n\n /**\n * Google Pay requires custom logic due to supporting two Tx variants that lead to the same payment method.\n * If the merchant creates a standalone Google Pay component, we need to verify if the payment method is available using both tx variants\n *\n * @param type\n * @returns\n */\n protected override getPaymentMethodFromPaymentMethodsResponse(type?: string): PaymentMethod {\n return (\n this.core.paymentMethodsResponse.find(type || this.constructor['type']) || this.core.paymentMethodsResponse.find(TxVariants.paywithgoogle)\n );\n }\n\n protected override formatProps(props): GooglePayConfiguration {\n const buttonSizeMode = props.buttonSizeMode ?? (props.isDropin ? 'fill' : 'static');\n const buttonLocale = getGooglePayLocale(props.buttonLocale ?? props.i18n?.locale);\n\n const callbackIntents: google.payments.api.CallbackIntent[] = [...props.callbackIntents, 'PAYMENT_AUTHORIZATION'];\n\n return {\n ...props,\n configuration: props.configuration,\n buttonSizeMode,\n buttonLocale,\n callbackIntents\n };\n }\n\n /**\n * Formats the component data output\n */\n protected override formatData() {\n const { googlePayCardNetwork, googlePayToken, billingAddress, deliveryAddress } = this.state;\n const { isExpress } = this.props;\n\n return {\n paymentMethod: {\n type: this.type,\n googlePayCardNetwork,\n googlePayToken,\n ...(isExpress && { subtype: 'express' })\n },\n browserInfo: this.browserInfo,\n origin: !!window && window.location.origin,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n };\n }\n\n protected submitAnalytics(analyticsObj: SendAnalyticsObject) {\n // Analytics will need to know about this.props.isExpress & this.props.expressPage\n super.submitAnalytics({ ...analyticsObj }, this.props);\n }\n\n /**\n * Displays the Google Pay payment sheet overlay\n */\n private showGooglePayPaymentSheet() {\n this.googlePay.initiatePayment(this.props, this.core.options.countryCode).catch((error: google.payments.api.PaymentsError) => {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n this.handleError(new AdyenCheckoutError(error.statusCode === 'CANCELED' ? 'CANCEL' : 'ERROR', error.toString(), { cause: error }));\n });\n }\n\n public override submit = () => {\n if (this.props.isInstantPayment) {\n this.submitAnalytics({ type: ANALYTICS_SELECTED_STR, target: ANALYTICS_INSTANT_PAYMENT_BUTTON });\n }\n\n new Promise<void>((resolve, reject) => this.props.onClick(resolve, reject)).then(this.showGooglePayPaymentSheet).catch(() => {\n // Swallow exception triggered by onClick reject\n });\n };\n\n /**\n * Method called when the payment is authorized in the payment sheet\n *\n * @see https://developers.google.com/pay/api/web/reference/client#onPaymentAuthorized\n **/\n private onPaymentAuthorized = async (paymentData: google.payments.api.PaymentData): Promise<google.payments.api.PaymentAuthorizationResult> => {\n const billingAddress: AddressData = formatGooglePayContactToAdyenAddressFormat(paymentData.paymentMethodData.info.billingAddress);\n const deliveryAddress: AddressData = formatGooglePayContactToAdyenAddressFormat(paymentData.shippingAddress, true);\n\n this.setState({\n authorizedEvent: paymentData,\n googlePayToken: paymentData.paymentMethodData.tokenizationData.token,\n googlePayCardNetwork: paymentData.paymentMethodData.info.cardNetwork,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n });\n\n return new Promise<google.payments.api.PaymentAuthorizationResult>(resolve => {\n this.handleAuthorization()\n .then(this.makePaymentsCall)\n .then(sanitizeResponse)\n .then(verifyPaymentDidNotFail)\n .then((paymentResponse: PaymentResponseData) => {\n resolve({ transactionState: 'SUCCESS' });\n return paymentResponse;\n })\n .then(paymentResponse => {\n this.handleResponse(paymentResponse);\n })\n .catch((paymentResponse?: RawPaymentResponse) => {\n this.setElementStatus('ready');\n\n const googlePayError = paymentResponse?.error?.googlePayError;\n const fallbackMessage = this.props.i18n.get('error.subtitle.payment');\n\n const error: google.payments.api.PaymentDataError =\n typeof googlePayError === 'string' || undefined\n ? {\n intent: 'PAYMENT_AUTHORIZATION',\n reason: 'OTHER_ERROR',\n message: (googlePayError as string) || fallbackMessage\n }\n : {\n intent: googlePayError?.intent || 'PAYMENT_AUTHORIZATION',\n reason: googlePayError?.reason || 'OTHER_ERROR',\n message: googlePayError?.message || fallbackMessage\n };\n\n resolve({\n transactionState: 'ERROR',\n error\n });\n\n const responseWithError = {\n ...paymentResponse,\n error: {\n googlePayError: error\n }\n };\n\n this.handleFailedResult(responseWithError);\n });\n });\n };\n\n /**\n * Call the 'onAuthorized' callback if available.\n * Must be resolved/reject for the payment flow to continue\n */\n private async handleAuthorization(): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n if (!this.props.onAuthorized) {\n resolve();\n }\n\n const { authorizedEvent, billingAddress, deliveryAddress } = this.state;\n\n this.props.onAuthorized(\n {\n authorizedEvent,\n ...(billingAddress && { billingAddress }),\n ...(deliveryAddress && { deliveryAddress })\n },\n { resolve, reject }\n );\n }).catch((error?: google.payments.api.PaymentDataError | string) => {\n // Format error in a way that the 'catch' of the 'onPaymentAuthorize' block accepts it\n const data = { error: { googlePayError: error } };\n return Promise.reject(data);\n });\n }\n\n /**\n * Validation\n */\n get isValid(): boolean {\n return !!this.state.googlePayToken;\n }\n\n /**\n * Determine a shopper's ability to return a form of payment from the Google Pay API.\n */\n public override async isAvailable(): Promise<void> {\n return this.isReadyToPay()\n .then(response => {\n if (!response.result) {\n throw new AdyenCheckoutError('ERROR', 'GooglePay is not available');\n }\n\n if (response.paymentMethodPresent === false) {\n throw new AdyenCheckoutError('ERROR', 'GooglePay - No paymentMethodPresent');\n }\n\n return Promise.resolve();\n })\n .catch(error => {\n return Promise.reject(error);\n });\n }\n\n /**\n * Determine a shopper's ability to return a form of payment from the Google Pay API.\n */\n public isReadyToPay = (): Promise<google.payments.api.IsReadyToPayResponse> => {\n return this.googlePay.isReadyToPay(this.props);\n };\n\n /**\n * Use this method to prefetch a PaymentDataRequest configuration to improve loadPaymentData execution time on later user interaction. No value is returned.\n */\n public prefetch = (): void => {\n return this.googlePay.prefetchPaymentData(this.props, this.core.options.countryCode);\n };\n\n get browserInfo(): BrowserInfo {\n return collectBrowserInfo();\n }\n\n get icon(): string {\n return this.props.icon ?? this.resources.getImage()('googlepay');\n }\n\n render() {\n if (this.props.showPayButton) {\n return (\n <GooglePayButton\n buttonColor={this.props.buttonColor}\n buttonType={this.props.buttonType}\n buttonSizeMode={this.props.buttonSizeMode}\n buttonLocale={this.props.buttonLocale}\n buttonRootNode={this.props.buttonRootNode}\n buttonRadius={this.props.buttonRadius}\n paymentsClient={this.googlePay.paymentsClient}\n onClick={this.submit}\n />\n );\n }\n\n return null;\n }\n}\n\nexport default GooglePay;\n"],"names":["GooglePay","UIElement","getPaymentMethodFromPaymentMethodsResponse","type","this","core","paymentMethodsResponse","find","constructor","TxVariants","paywithgoogle","formatProps","props","buttonSizeMode","isDropin","buttonLocale","getGooglePayLocale","i18n","locale","callbackIntents","configuration","formatData","googlePayCardNetwork","googlePayToken","billingAddress","deliveryAddress","state","isExpress","paymentMethod","subtype","browserInfo","origin","window","location","submitAnalytics","analyticsObj","super","showGooglePayPaymentSheet","googlePay","initiatePayment","options","countryCode","catch","error","handleError","AdyenCheckoutError","statusCode","toString","cause","handleAuthorization","Promise","resolve","reject","onAuthorized","authorizedEvent","data","googlePayError","isValid","isAvailable","isReadyToPay","then","response","result","paymentMethodPresent","collectBrowserInfo","icon","resources","getImage","render","showPayButton","h","GooglePayButton","buttonColor","buttonType","buttonRootNode","buttonRadius","paymentsClient","onClick","submit","checkout","_define_property","isInstantPayment","ANALYTICS_SELECTED_STR","target","ANALYTICS_INSTANT_PAYMENT_BUTTON","onPaymentAuthorized","async","paymentData","formatGooglePayContactToAdyenAddressFormat","paymentMethodData","info","shippingAddress","setState","tokenizationData","token","cardNetwork","makePaymentsCall","sanitizeResponse","verifyPaymentDidNotFail","paymentResponse","transactionState","handleResponse","setElementStatus","fallbackMessage","get","intent","reason","message","responseWithError","handleFailedResult","prefetch","prefetchPaymentData","bind","paymentDataCallbacks","onPaymentDataChanged","merchantId","GooglePayService","environment","googlepay","txVariants","defaultProps"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import o from"../helpers/QRLoaderContainer/QRLoaderContainer.js";import{delay as r,countdownTime as t}from"./config.js";import{TxVariants as e}from"../tx-variants.js";import{PayNowIntroduction as n}from"./components/PayNowIntroduction.js";import{PayNowInstructions as a}from"./components/PayNowInstructions.js";class i extends o{formatProps(o){return{introduction:n,instructions:a,timeToPay:"payme.timeToPay",delay:r,countdownTime:t,...super.formatProps(o)}}}var s,m,p;s=i,m="type",p=e.paynow,m in s?Object.defineProperty(s,m,{value:p,enumerable:!0,configurable:!0,writable:!0}):s[m]=p;export{i as default};
1
+ import o from"../helpers/QRLoaderContainer/QRLoaderContainer.js";import{countdownTime as r,delay as t}from"./config.js";import{TxVariants as e}from"../tx-variants.js";import{PayNowIntroduction as n}from"./components/PayNowIntroduction.js";import{PayNowInstructions as a}from"./components/PayNowInstructions.js";class i extends o{formatProps(o){return{introduction:n,instructions:a,timeToPay:"payme.timeToPay",delay:t,countdownTime:r,...super.formatProps(o)}}}var s,m,p;s=i,m="type",p=e.paynow,m in s?Object.defineProperty(s,m,{value:p,enumerable:!0,configurable:!0,writable:!0}):s[m]=p;export{i as default};
2
2
  //# sourceMappingURL=PayNow.js.map
@@ -1,2 +1,2 @@
1
- const e={INVALID_ACTION:"Invalid Action",NO_TOKEN_PROVIDED:"No token was provided",PAYPAL_OVERLAY_CLOSED:"PayPal overlay closed",SUBMIT_NOT_SUPPORTED:"Calling submit() is not supported for this payment method",WRONG_INSTANCE:"The instance of the PayPal component being used is not the same which started the payment"};export{e as ERRORS};
1
+ const t={NO_TOKEN_PROVIDED:"No token was provided",SUBMIT_NOT_SUPPORTED:"Calling submit() is not supported for this payment method",WRONG_INSTANCE:"The instance of the PayPal component being used is not the same which started the payment"};export{t as ERRORS};
2
2
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sources":["../../../../src/components/PayPal/constants.ts"],"sourcesContent":["export const ERRORS = {\n INVALID_ACTION: 'Invalid Action',\n NO_TOKEN_PROVIDED: 'No token was provided',\n PAYPAL_OVERLAY_CLOSED: 'PayPal overlay closed',\n SUBMIT_NOT_SUPPORTED: 'Calling submit() is not supported for this payment method',\n WRONG_INSTANCE: 'The instance of the PayPal component being used is not the same which started the payment'\n};\n"],"names":["ERRORS","INVALID_ACTION","NO_TOKEN_PROVIDED","PAYPAL_OVERLAY_CLOSED","SUBMIT_NOT_SUPPORTED","WRONG_INSTANCE"],"mappings":"MAAaA,EAAS,CAClBC,eAAgB,iBAChBC,kBAAmB,wBACnBC,sBAAuB,wBACvBC,qBAAsB,4DACtBC,eAAgB"}
1
+ {"version":3,"file":"constants.js","sources":["../../../../src/components/PayPal/constants.ts"],"sourcesContent":["export const ERRORS = {\n INVALID_ACTION: 'Invalid Action',\n NO_TOKEN_PROVIDED: 'No token was provided',\n PAYPAL_OVERLAY_CLOSED: 'PayPal overlay closed',\n SUBMIT_NOT_SUPPORTED: 'Calling submit() is not supported for this payment method',\n WRONG_INSTANCE: 'The instance of the PayPal component being used is not the same which started the payment'\n};\n"],"names":["ERRORS","NO_TOKEN_PROVIDED","SUBMIT_NOT_SUPPORTED","WRONG_INSTANCE"],"mappings":"MAAaA,EAAS,CAElBC,kBAAmB,wBAEnBC,qBAAsB,4DACtBC,eAAgB"}
@@ -1 +1 @@
1
- {"version":3,"file":"PayTo.js","sources":["../../../../src/components/PayTo/PayTo.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport { CoreProvider } from '../../core/Context/CoreProvider';\nimport Await from '../../components/internal/Await';\nimport SRPanelProvider from '../../core/Errors/SRPanelProvider';\nimport { TxVariants } from '../tx-variants';\nimport { PayToIdentifierEnum } from './components/IdentifierSelector';\nimport PayToComponent from './components/PayToComponent';\nimport { PayToInstructions } from './components/PayToInstructions';\nimport MandateSummary from './components/MandateSummary';\nimport { PayToConfiguration, PayToData } from './types';\nimport PayButton, { payAmountLabel } from '../internal/PayButton';\n\n/*\nAwait Config (previously in its own file)\n */\nconst COUNTDOWN_MINUTES = 15; // min\nconst THROTTLE_TIME = 60000; // ms\nconst THROTTLE_INTERVAL = 10000; // ms\n\nconst config = {\n COUNTDOWN_MINUTES,\n THROTTLE_TIME,\n THROTTLE_INTERVAL,\n showCountdownTimer: false\n};\n\nconst getAccountIdentifier = (state: PayToData) => {\n // if it's BSB Input type merge bankAccount with BSB\n if (state.selectedInput === 'bsb-option') {\n return `${state.bsb}-${state.bankAccountNumber}`;\n } else if (state.selectedInput === 'payid-option') {\n // otherwise use the option in the dropdown\n switch (state.selectedIdentifier) {\n case PayToIdentifierEnum.email:\n return state.email;\n case PayToIdentifierEnum.abn:\n return state.abn;\n case PayToIdentifierEnum.orgid:\n return state.orgid;\n case PayToIdentifierEnum.phone:\n // merge the phone prefix and number - see comment in ticket\n return `${state.phonePrefix}-${state.phoneNumber}`;\n }\n }\n};\n/**\n *\n */\nexport class PayToElement extends UIElement<PayToConfiguration> {\n public static readonly type = TxVariants.payto;\n\n protected static defaultProps = {\n placeholders: {}\n };\n\n formatProps(props) {\n return {\n ...props,\n data: {\n ...props.data,\n phonePrefix: '+61' // hardcode +61\n }\n };\n }\n\n /**\n * Formats the component data output\n */\n formatData() {\n if (this.props.storedPaymentMethodId) {\n return {\n paymentMethod: {\n type: PayToElement.type,\n storedPaymentMethodId: this.props.storedPaymentMethodId\n }\n };\n }\n\n return {\n paymentMethod: {\n type: PayToElement.type,\n shopperAccountIdentifier: getAccountIdentifier(this.state.data)\n },\n shopperName: {\n firstName: this.state.data.firstName,\n lastName: this.state.data.lastName\n }\n };\n }\n\n get isValid(): boolean {\n if (this.props.storedPaymentMethodId) {\n return true;\n }\n\n return !!this.state.isValid;\n }\n\n get displayName() {\n if (this.props.storedPaymentMethodId && this.props.label) {\n return this.props.label;\n }\n return this.props.name;\n }\n\n get additionalInfo() {\n return this.props.storedPaymentMethodId ? this.props.name : '';\n }\n\n render() {\n // Stored\n if (this.props.storedPaymentMethodId) {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n {this.props.showPayButton && (\n <PayButton\n {...this.props}\n classNameModifiers={['standalone']}\n amount={this.props.amount}\n label={payAmountLabel(this.props.i18n, this.props.amount)}\n onClick={this.submit}\n />\n )}\n </CoreProvider>\n );\n }\n // Await\n if (this.props.paymentData) {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <SRPanelProvider srPanel={this.props.modules.srPanel}>\n <Await\n ref={ref => {\n this.componentRef = ref;\n }}\n amount={this.props.amount}\n showAmount={true}\n instructions={PayToInstructions}\n clientKey={this.props.clientKey}\n paymentData={this.props.paymentData}\n onError={this.props.onError}\n onComplete={this.onComplete}\n brandLogo={this.icon}\n type={this.constructor['type']}\n messageText={this.props.i18n.get('payto.confirmPayment')}\n awaitText={this.props.i18n.get('payto.await.waitForConfirmation')}\n showCountdownTimer={config.showCountdownTimer}\n throttleTime={config.THROTTLE_TIME}\n throttleInterval={config.THROTTLE_INTERVAL}\n onActionHandled={this.onActionHandled}\n endSlot={() =>\n !!this.props.mandate && (\n <MandateSummary mandate={this.props.mandate} payee={this.props.payee} currencyCode={this.props.amount.currency} />\n )\n }\n />\n </SRPanelProvider>\n </CoreProvider>\n );\n }\n // Input\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <PayToComponent\n data={this.props.data}\n placeholders={this.props.placeholders}\n setComponentRef={this.setComponentRef}\n onChange={this.setState}\n payButton={this.payButton}\n showPayButton={this.props.showPayButton}\n />\n </CoreProvider>\n );\n }\n}\n\nexport default PayToElement;\n"],"names":["config","getAccountIdentifier","state","selectedInput","bsb","bankAccountNumber","selectedIdentifier","PayToIdentifierEnum","email","abn","orgid","phone","phonePrefix","phoneNumber","PayToElement","UIElement","formatProps","props","data","formatData","this","storedPaymentMethodId","paymentMethod","type","shopperAccountIdentifier","shopperName","firstName","lastName","isValid","displayName","label","name","additionalInfo","render","h","CoreProvider","i18n","loadingContext","resources","showPayButton","PayButton","classNameModifiers","amount","payAmountLabel","onClick","submit","paymentData","SRPanelProvider","srPanel","modules","Await","ref","componentRef","showAmount","instructions","PayToInstructions","clientKey","onError","onComplete","brandLogo","icon","constructor","messageText","get","awaitText","showCountdownTimer","throttleTime","throttleInterval","onActionHandled","endSlot","mandate","MandateSummary","payee","currencyCode","currency","PayToComponent","placeholders","setComponentRef","onChange","setState","payButton","_define_property","TxVariants","payto","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"PayTo.js","sources":["../../../../src/components/PayTo/PayTo.tsx"],"sourcesContent":["import { h } from 'preact';\nimport UIElement from '../internal/UIElement/UIElement';\nimport { CoreProvider } from '../../core/Context/CoreProvider';\nimport Await from '../../components/internal/Await';\nimport SRPanelProvider from '../../core/Errors/SRPanelProvider';\nimport { TxVariants } from '../tx-variants';\nimport { PayToIdentifierEnum } from './components/IdentifierSelector';\nimport PayToComponent from './components/PayToComponent';\nimport { PayToInstructions } from './components/PayToInstructions';\nimport MandateSummary from './components/MandateSummary';\nimport { PayToConfiguration, PayToData } from './types';\nimport PayButton, { payAmountLabel } from '../internal/PayButton';\n\n/*\nAwait Config (previously in its own file)\n */\nconst COUNTDOWN_MINUTES = 15; // min\nconst THROTTLE_TIME = 60000; // ms\nconst THROTTLE_INTERVAL = 10000; // ms\n\nconst config = {\n COUNTDOWN_MINUTES,\n THROTTLE_TIME,\n THROTTLE_INTERVAL,\n showCountdownTimer: false\n};\n\nconst getAccountIdentifier = (state: PayToData) => {\n // if it's BSB Input type merge bankAccount with BSB\n if (state.selectedInput === 'bsb-option') {\n return `${state.bsb}-${state.bankAccountNumber}`;\n } else if (state.selectedInput === 'payid-option') {\n // otherwise use the option in the dropdown\n switch (state.selectedIdentifier) {\n case PayToIdentifierEnum.email:\n return state.email;\n case PayToIdentifierEnum.abn:\n return state.abn;\n case PayToIdentifierEnum.orgid:\n return state.orgid;\n case PayToIdentifierEnum.phone:\n // merge the phone prefix and number - see comment in ticket\n return `${state.phonePrefix}-${state.phoneNumber}`;\n }\n }\n};\n/**\n *\n */\nexport class PayToElement extends UIElement<PayToConfiguration> {\n public static readonly type = TxVariants.payto;\n\n protected static defaultProps = {\n placeholders: {}\n };\n\n formatProps(props) {\n return {\n ...props,\n data: {\n ...props.data,\n phonePrefix: '+61' // hardcode +61\n }\n };\n }\n\n /**\n * Formats the component data output\n */\n formatData() {\n if (this.props.storedPaymentMethodId) {\n return {\n paymentMethod: {\n type: PayToElement.type,\n storedPaymentMethodId: this.props.storedPaymentMethodId\n }\n };\n }\n\n return {\n paymentMethod: {\n type: PayToElement.type,\n shopperAccountIdentifier: getAccountIdentifier(this.state.data)\n },\n shopperName: {\n firstName: this.state.data.firstName,\n lastName: this.state.data.lastName\n }\n };\n }\n\n get isValid(): boolean {\n if (this.props.storedPaymentMethodId) {\n return true;\n }\n\n return !!this.state.isValid;\n }\n\n get displayName() {\n if (this.props.storedPaymentMethodId && this.props.label) {\n return this.props.label;\n }\n return this.props.name;\n }\n\n get additionalInfo() {\n return this.props.storedPaymentMethodId ? this.props.name : '';\n }\n\n render() {\n // Stored\n if (this.props.storedPaymentMethodId) {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n {this.props.showPayButton && (\n <PayButton\n {...this.props}\n classNameModifiers={['standalone']}\n amount={this.props.amount}\n label={payAmountLabel(this.props.i18n, this.props.amount)}\n onClick={this.submit}\n />\n )}\n </CoreProvider>\n );\n }\n // Await\n if (this.props.paymentData) {\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <SRPanelProvider srPanel={this.props.modules.srPanel}>\n <Await\n ref={ref => {\n this.componentRef = ref;\n }}\n amount={this.props.amount}\n showAmount={true}\n instructions={PayToInstructions}\n clientKey={this.props.clientKey}\n paymentData={this.props.paymentData}\n onError={this.props.onError}\n onComplete={this.onComplete}\n brandLogo={this.icon}\n type={this.constructor['type']}\n messageText={this.props.i18n.get('payto.confirmPayment')}\n awaitText={this.props.i18n.get('payto.await.waitForConfirmation')}\n showCountdownTimer={config.showCountdownTimer}\n throttleTime={config.THROTTLE_TIME}\n throttleInterval={config.THROTTLE_INTERVAL}\n onActionHandled={this.onActionHandled}\n endSlot={() =>\n !!this.props.mandate && (\n <MandateSummary mandate={this.props.mandate} payee={this.props.payee} currencyCode={this.props.amount.currency} />\n )\n }\n />\n </SRPanelProvider>\n </CoreProvider>\n );\n }\n // Input\n return (\n <CoreProvider i18n={this.props.i18n} loadingContext={this.props.loadingContext} resources={this.resources}>\n <PayToComponent\n data={this.props.data}\n placeholders={this.props.placeholders}\n setComponentRef={this.setComponentRef}\n onChange={this.setState}\n payButton={this.payButton}\n showPayButton={this.props.showPayButton}\n />\n </CoreProvider>\n );\n }\n}\n\nexport default PayToElement;\n"],"names":["config","getAccountIdentifier","state","selectedInput","bsb","bankAccountNumber","selectedIdentifier","PayToIdentifierEnum","email","abn","orgid","phone","phonePrefix","phoneNumber","PayToElement","UIElement","formatProps","props","data","formatData","this","storedPaymentMethodId","paymentMethod","type","shopperAccountIdentifier","shopperName","firstName","lastName","isValid","displayName","label","name","additionalInfo","render","h","CoreProvider","i18n","loadingContext","resources","showPayButton","PayButton","classNameModifiers","amount","payAmountLabel","onClick","submit","paymentData","SRPanelProvider","srPanel","modules","Await","ref","componentRef","showAmount","instructions","PayToInstructions","clientKey","onError","onComplete","brandLogo","icon","constructor","messageText","get","awaitText","showCountdownTimer","throttleTime","throttleInterval","onActionHandled","endSlot","mandate","MandateSummary","payee","currencyCode","currency","PayToComponent","placeholders","setComponentRef","onChange","setState","payButton","_define_property","TxVariants","payto","defaultProps"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PixInput.js","sources":["../../../../../src/components/Pix/PixInput/PixInput.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useEffect, useState } from 'preact/hooks';\nimport { pixValidationRules } from './validate';\nimport { pixFormatters } from './utils';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport useForm from '../../../utils/useForm';\nimport { BrazilPersonalDetail } from '../../internal/SocialSecurityNumberBrazil/BrazilPersonalDetail';\nimport { PixInputDataState, PixInputProps } from './types';\n\nfunction PixInput({ name, data: dataProps, personalDetailsRequired, showPayButton, onChange, payButton }: PixInputProps) {\n const { i18n } = useCoreContext();\n const formSchema = ['firstName', 'lastName', 'socialSecurityNumber'];\n const { handleChangeFor, triggerValidation, setSchema, data, valid, errors, isValid } = useForm<PixInputDataState>({\n schema: formSchema,\n defaultData: dataProps,\n rules: pixValidationRules,\n formatters: pixFormatters\n });\n\n // Handle form schema updates\n useEffect(() => {\n const newSchema = personalDetailsRequired ? [...formSchema] : [];\n setSchema(newSchema);\n }, [personalDetailsRequired]);\n\n const [status, setStatus] = useState('ready');\n this.setStatus = setStatus;\n\n this.showValidation = () => {\n triggerValidation();\n };\n\n useEffect(() => {\n onChange({ data, valid, errors, isValid });\n }, [onChange, data, valid, errors]);\n\n const buttonModifiers = !personalDetailsRequired ? ['standalone'] : [];\n\n return (\n <div className=\"adyen-checkout__pix-input__field\" style={!showPayButton && !personalDetailsRequired ? { display: 'none' } : null}>\n {personalDetailsRequired && (\n <BrazilPersonalDetail i18n={i18n} data={data} handleChangeFor={handleChangeFor} errors={errors} valid={valid} />\n )}\n\n {showPayButton &&\n payButton({\n status,\n label: `${i18n.get('continueTo')} ${name}`,\n classNameModifiers: buttonModifiers\n })}\n </div>\n );\n}\n\nexport default PixInput;\n"],"names":["PixInput","name","data","dataProps","personalDetailsRequired","showPayButton","onChange","payButton","i18n","useCoreContext","formSchema","handleChangeFor","triggerValidation","setSchema","valid","errors","isValid","useForm","schema","defaultData","rules","pixValidationRules","formatters","pixFormatters","useEffect","newSchema","status","setStatus","useState","this","showValidation","buttonModifiers","h","div","className","style","display","BrazilPersonalDetail","label","get","classNameModifiers"],"mappings":"8dASA,SAASA,GAASC,KAAEA,EAAMC,KAAMC,EAASC,wBAAEA,EAAuBC,cAAEA,EAAaC,SAAEA,EAAQC,UAAEA,IACzF,MAAMC,KAAEA,GAASC,IACXC,EAAa,CAAC,YAAa,WAAY,yBACvCC,gBAAEA,EAAeC,kBAAEA,EAAiBC,UAAEA,EAASX,KAAEA,EAAIY,MAAEA,EAAKC,OAAEA,EAAMC,QAAEA,GAAYC,EAA2B,CAC/GC,OAAQR,EACRS,YAAahB,EACbiB,MAAOC,EACPC,WAAYC,IAIhBC,GAAU,KACN,MAAMC,EAAYrB,EAA0B,IAAIM,GAAc,GAC9DG,EAAUY,EAAAA,GACX,CAACrB,IAEJ,MAAOsB,EAAQC,GAAaC,EAAS,SACrCC,KAAKF,UAAYA,EAEjBE,KAAKC,eAAiB,KAClBlB,GAAAA,EAGJY,GAAU,KACNlB,EAAS,CAAEJ,OAAMY,QAAOC,SAAQC,WAAQ,GACzC,CAACV,EAAUJ,EAAMY,EAAOC,IAE3B,MAAMgB,EAAmB3B,EAA2C,GAAjB,CAAC,cAEpD,OACI4B,EAACC,MAAAA,CAAIC,UAAU,mCAAmCC,MAAQ9B,GAAkBD,EAAgD,KAAtB,CAAEgC,QAAS,SAC5GhC,GACG4B,EAACK,EAAAA,CAAqB7B,KAAMA,EAAMN,KAAMA,EAAMS,gBAAiBA,EAAiBI,OAAQA,EAAQD,MAAOA,IAG1GT,GACGE,EAAU,CACNmB,SACAY,MAAO,GAAG9B,EAAK+B,IAAI,iBAAiBtC,IACpCuC,mBAAoBT,IAIxC"}
1
+ {"version":3,"file":"PixInput.js","sources":["../../../../../src/components/Pix/PixInput/PixInput.tsx"],"sourcesContent":["import { h } from 'preact';\nimport { useEffect, useState } from 'preact/hooks';\nimport { pixValidationRules } from './validate';\nimport { pixFormatters } from './utils';\nimport { useCoreContext } from '../../../core/Context/CoreProvider';\nimport useForm from '../../../utils/useForm';\nimport { BrazilPersonalDetail } from '../../internal/SocialSecurityNumberBrazil/BrazilPersonalDetail';\nimport { PixInputDataState, PixInputProps } from './types';\n\nfunction PixInput({ name, data: dataProps, personalDetailsRequired, showPayButton, onChange, payButton }: PixInputProps) {\n const { i18n } = useCoreContext();\n const formSchema = ['firstName', 'lastName', 'socialSecurityNumber'];\n\n const { handleChangeFor, triggerValidation, setSchema, data, valid, errors, isValid } = useForm<PixInputDataState>({\n schema: formSchema,\n defaultData: dataProps,\n rules: pixValidationRules,\n formatters: pixFormatters\n });\n\n // Handle form schema updates\n useEffect(() => {\n const newSchema = personalDetailsRequired ? [...formSchema] : [];\n setSchema(newSchema);\n }, [personalDetailsRequired]);\n\n const [status, setStatus] = useState('ready');\n this.setStatus = setStatus;\n\n this.showValidation = () => {\n triggerValidation();\n };\n\n useEffect(() => {\n onChange({ data, valid, errors, isValid });\n }, [onChange, data, valid, errors]);\n\n const buttonModifiers = !personalDetailsRequired ? ['standalone'] : [];\n\n return (\n <div className=\"adyen-checkout__pix-input__field\" style={!showPayButton && !personalDetailsRequired ? { display: 'none' } : null}>\n {personalDetailsRequired && (\n <BrazilPersonalDetail i18n={i18n} data={data} handleChangeFor={handleChangeFor} errors={errors} valid={valid} />\n )}\n\n {showPayButton &&\n payButton({\n status,\n label: `${i18n.get('continueTo')} ${name}`,\n classNameModifiers: buttonModifiers\n })}\n </div>\n );\n}\n\nexport default PixInput;\n"],"names":["PixInput","name","data","dataProps","personalDetailsRequired","showPayButton","onChange","payButton","i18n","useCoreContext","formSchema","handleChangeFor","triggerValidation","setSchema","valid","errors","isValid","useForm","schema","defaultData","rules","pixValidationRules","formatters","pixFormatters","useEffect","newSchema","status","setStatus","useState","this","showValidation","buttonModifiers","h","div","className","style","display","BrazilPersonalDetail","label","get","classNameModifiers"],"mappings":"8dASA,SAASA,GAASC,KAAEA,EAAMC,KAAMC,EAASC,wBAAEA,EAAuBC,cAAEA,EAAaC,SAAEA,EAAQC,UAAEA,IACzF,MAAMC,KAAEA,GAASC,IACXC,EAAa,CAAC,YAAa,WAAY,yBAEvCC,gBAAEA,EAAeC,kBAAEA,EAAiBC,UAAEA,EAASX,KAAEA,EAAIY,MAAEA,EAAKC,OAAEA,EAAMC,QAAEA,GAAYC,EAA2B,CAC/GC,OAAQR,EACRS,YAAahB,EACbiB,MAAOC,EACPC,WAAYC,IAIhBC,GAAU,KACN,MAAMC,EAAYrB,EAA0B,IAAIM,GAAc,GAC9DG,EAAUY,EAAAA,GACX,CAACrB,IAEJ,MAAOsB,EAAQC,GAAaC,EAAS,SACrCC,KAAKF,UAAYA,EAEjBE,KAAKC,eAAiB,KAClBlB,GAAAA,EAGJY,GAAU,KACNlB,EAAS,CAAEJ,OAAMY,QAAOC,SAAQC,WAAQ,GACzC,CAACV,EAAUJ,EAAMY,EAAOC,IAE3B,MAAMgB,EAAmB3B,EAA2C,GAAjB,CAAC,cAEpD,OACI4B,EAACC,MAAAA,CAAIC,UAAU,mCAAmCC,MAAQ9B,GAAkBD,EAAgD,KAAtB,CAAEgC,QAAS,SAC5GhC,GACG4B,EAACK,EAAAA,CAAqB7B,KAAMA,EAAMN,KAAMA,EAAMS,gBAAiBA,EAAiBI,OAAQA,EAAQD,MAAOA,IAG1GT,GACGE,EAAU,CACNmB,SACAY,MAAO,GAAG9B,EAAK+B,IAAI,iBAAiBtC,IACpCuC,mBAAoBT,IAIxC"}
@@ -1,2 +1,2 @@
1
- import r from"../helpers/QRLoaderContainer/QRLoaderContainer.js";import{delay as e,countdownTime as o}from"./config.js";import{TxVariants as t}from"../tx-variants.js";class a extends r{formatProps(r){return{delay:e,countdownTime:o,...super.formatProps(r)}}}var n,p,i;n=a,p="type",i=t.promptpay,p in n?Object.defineProperty(n,p,{value:i,enumerable:!0,configurable:!0,writable:!0}):n[p]=i;export{a as default};
1
+ import r from"../helpers/QRLoaderContainer/QRLoaderContainer.js";import{countdownTime as e,delay as o}from"./config.js";import{TxVariants as t}from"../tx-variants.js";class a extends r{formatProps(r){return{delay:o,countdownTime:e,...super.formatProps(r)}}}var n,p,i;n=a,p="type",i=t.promptpay,p in n?Object.defineProperty(n,p,{value:i,enumerable:!0,configurable:!0,writable:!0}):n[p]=i;export{a as default};
2
2
  //# sourceMappingURL=PromptPay.js.map
@@ -1,2 +1,2 @@
1
- import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as r}from"../internal/UIElement/UIElement.js";import{CoreProvider as e}from"../../core/Context/CoreProvider.js";import o from"./components/RedirectShopper/RedirectShopper.js";import s from"../internal/RedirectButton/RedirectButton.js";import{TxVariants as n}from"../tx-variants.js";import i from"../../utils/browserInfo.js";import{ANALYTICS_EVENT as p,ANALYTICS_ERROR_TYPE as a,ANALYTICS_ERROR_CODE as c}from"../../core/Analytics/constants.js";function m(t,r,e){return r in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}class d extends r{formatData(){return{paymentMethod:{type:this.type},browserInfo:this.browserInfo}}get isValid(){return!0}get browserInfo(){return i()}render(){return this.props.url&&this.props.method?t(o,{url:this.props.url,...this.props,onActionHandled:this.onActionHandled,onRedirectError:this.handleRedirectError}):this.props.showPayButton?t(e,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},t(s,{...this.props,showPayButton:this.props.showPayButton,name:this.displayName,onSubmit:this.submit,payButton:this.payButton,ref:t=>{this.componentRef=t}})):null}constructor(...t){super(...t),m(this,"handleRedirectError",(()=>{super.submitAnalytics({component:this.props.paymentMethodType,type:p.error,errorType:a.redirect,code:c.redirect})}))}}m(d,"type",n.redirect),m(d,"defaultProps",{type:d.type});export{d as default};
1
+ import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as r}from"../internal/UIElement/UIElement.js";import{CoreProvider as e}from"../../core/Context/CoreProvider.js";import o from"./components/RedirectShopper/RedirectShopper.js";import s from"../internal/RedirectButton/RedirectButton.js";import{TxVariants as n}from"../tx-variants.js";import i from"../../utils/browserInfo.js";import{ANALYTICS_ERROR_CODE as p,ANALYTICS_ERROR_TYPE as a,ANALYTICS_EVENT as c}from"../../core/Analytics/constants.js";function m(t,r,e){return r in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}class d extends r{formatData(){return{paymentMethod:{type:this.type},browserInfo:this.browserInfo}}get isValid(){return!0}get browserInfo(){return i()}render(){return this.props.url&&this.props.method?t(o,{url:this.props.url,...this.props,onActionHandled:this.onActionHandled,onRedirectError:this.handleRedirectError}):this.props.showPayButton?t(e,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},t(s,{...this.props,showPayButton:this.props.showPayButton,name:this.displayName,onSubmit:this.submit,payButton:this.payButton,ref:t=>{this.componentRef=t}})):null}constructor(...t){super(...t),m(this,"handleRedirectError",(()=>{super.submitAnalytics({component:this.props.paymentMethodType,type:c.error,errorType:a.redirect,code:p.redirect})}))}}m(d,"type",n.redirect),m(d,"defaultProps",{type:d.type});export{d as default};
2
2
  //# sourceMappingURL=Redirect.js.map
@@ -1,2 +1,2 @@
1
- import{createElement as e}from"../../external/preact/dist/preact.js";import r from"../helpers/OpenInvoiceContainer/OpenInvoiceContainer.js";import{personalDetailsRequiredFields as i,deliveryAddressSpecification as o,allowedBillingCountries as t,allowedDeliveryCountries as s,DISCLAIMER_MESSAGE_TRANSLATION_KEY as n,termsAndConditionsUrlMap as a,privacyPolicyUrlMap as l}from"./config.js";import{getConsentUrl as c}from"../../utils/getConsentUrl.js";import{LabelOnlyDisclaimerMessage as d}from"../internal/DisclaimerMessage/DisclaimerMessage.js";import{TxVariants as p}from"../tx-variants.js";function f(e,r,i){return r in e?Object.defineProperty(e,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[r]=i,e}class m extends r{formatProps(r){const i=c(r.countryCode,r.i18n?.locale,a),o=c(r.countryCode,r.i18n?.locale,l);return{...super.formatProps(r),billingAddressSpecification:{...r.billingAddressSpecification,allowedCountries:r.countryCode?[r.countryCode]:t},deliveryAddressSpecification:{...r.deliveryAddressSpecification,allowedCountries:s},consentCheckboxLabel:e(d,{message:r.i18n.get(n),urls:[i,o]})}}}f(m,"type",p.riverty),f(m,"defaultProps",{personalDetailsRequiredFields:i,deliveryAddressSpecification:o,...r.defaultProps});export{m as default};
1
+ import{createElement as e}from"../../external/preact/dist/preact.js";import r from"../helpers/OpenInvoiceContainer/OpenInvoiceContainer.js";import{termsAndConditionsUrlMap as i,privacyPolicyUrlMap as o,allowedDeliveryCountries as t,allowedBillingCountries as s,DISCLAIMER_MESSAGE_TRANSLATION_KEY as n,deliveryAddressSpecification as a,personalDetailsRequiredFields as l}from"./config.js";import{getConsentUrl as c}from"../../utils/getConsentUrl.js";import{LabelOnlyDisclaimerMessage as d}from"../internal/DisclaimerMessage/DisclaimerMessage.js";import{TxVariants as p}from"../tx-variants.js";function f(e,r,i){return r in e?Object.defineProperty(e,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[r]=i,e}class m extends r{formatProps(r){const a=c(r.countryCode,r.i18n?.locale,i),l=c(r.countryCode,r.i18n?.locale,o);return{...super.formatProps(r),billingAddressSpecification:{...r.billingAddressSpecification,allowedCountries:r.countryCode?[r.countryCode]:s},deliveryAddressSpecification:{...r.deliveryAddressSpecification,allowedCountries:t},consentCheckboxLabel:e(d,{message:r.i18n.get(n),urls:[a,l]})}}}f(m,"type",p.riverty),f(m,"defaultProps",{personalDetailsRequiredFields:l,deliveryAddressSpecification:a,...r.defaultProps});export{m as default};
2
2
  //# sourceMappingURL=Riverty.js.map
@@ -1,2 +1,2 @@
1
- import{FIRST_NAME as t,LAST_NAME as e,COUNTRY as s,STREET as c,HOUSE_NUMBER_OR_NAME as o,POSTAL_CODE as n,CITY as m}from"../internal/Address/constants.js";const r="riverty.termsAndConditions",i=["AT","CH","DE"],d=["NO","SE","FI","DK","DE","AT","CH","NL","BE"],a=["firstName","lastName","dateOfBirth","shopperEmail","telephoneNumber"],h={default:{labels:{[t]:"deliveryAddress.firstName",[e]:"deliveryAddress.lastName"},schema:[s,[[t,50],[e,50]],[[c,70],[o,30]],[[n,30],[m,70]]]}},_={at:{en:"https://documents.riverty.com/terms_conditions/payment_methods/invoice/at_en",de:"https://documents.riverty.com/terms_conditions/payment_methods/invoice/at_de"},ch:{en:"https://documents.riverty.com/terms_conditions/payment_methods/invoice/ch_en",de:"https://documents.riverty.com/terms_conditions/payment_methods/invoice/ch_de",fr:"https://documents.riverty.com/terms_conditions/payment_methods/invoice/ch_fr"},de:{en:"https://documents.riverty.com/terms_conditions/payment_methods/invoice/de_en",de:"https://documents.riverty.com/terms_conditions/payment_methods/invoice/de_de"}},p={at:{en:"https://documents.riverty.com/privacy_statement/checkout/at_en",de:"https://documents.riverty.com/privacy_statement/checkout/at_de"},ch:{en:"https://documents.riverty.com/privacy_statement/checkout/ch_en",de:"https://documents.riverty.com/privacy_statement/checkout/h_de",fr:"https://documents.riverty.com/privacy_statement/checkout/ch_fr"},de:{en:"https://documents.riverty.com/privacy_statement/checkout/de_en",de:"https://documents.riverty.com/privacy_statement/checkout/de_de"}};export{r as DISCLAIMER_MESSAGE_TRANSLATION_KEY,i as allowedBillingCountries,d as allowedDeliveryCountries,h as deliveryAddressSpecification,a as personalDetailsRequiredFields,p as privacyPolicyUrlMap,_ as termsAndConditionsUrlMap};
1
+ import{COUNTRY as t,FIRST_NAME as e,LAST_NAME as s,STREET as c,HOUSE_NUMBER_OR_NAME as o,POSTAL_CODE as n,CITY as m}from"../internal/Address/constants.js";const r="riverty.termsAndConditions",i=["AT","CH","DE"],d=["NO","SE","FI","DK","DE","AT","CH","NL","BE"],a=["firstName","lastName","dateOfBirth","shopperEmail","telephoneNumber"],h={default:{labels:{[e]:"deliveryAddress.firstName",[s]:"deliveryAddress.lastName"},schema:[t,[[e,50],[s,50]],[[c,70],[o,30]],[[n,30],[m,70]]]}},_={at:{en:"https://documents.riverty.com/terms_conditions/payment_methods/invoice/at_en",de:"https://documents.riverty.com/terms_conditions/payment_methods/invoice/at_de"},ch:{en:"https://documents.riverty.com/terms_conditions/payment_methods/invoice/ch_en",de:"https://documents.riverty.com/terms_conditions/payment_methods/invoice/ch_de",fr:"https://documents.riverty.com/terms_conditions/payment_methods/invoice/ch_fr"},de:{en:"https://documents.riverty.com/terms_conditions/payment_methods/invoice/de_en",de:"https://documents.riverty.com/terms_conditions/payment_methods/invoice/de_de"}},p={at:{en:"https://documents.riverty.com/privacy_statement/checkout/at_en",de:"https://documents.riverty.com/privacy_statement/checkout/at_de"},ch:{en:"https://documents.riverty.com/privacy_statement/checkout/ch_en",de:"https://documents.riverty.com/privacy_statement/checkout/h_de",fr:"https://documents.riverty.com/privacy_statement/checkout/ch_fr"},de:{en:"https://documents.riverty.com/privacy_statement/checkout/de_en",de:"https://documents.riverty.com/privacy_statement/checkout/de_de"}};export{r as DISCLAIMER_MESSAGE_TRANSLATION_KEY,i as allowedBillingCountries,d as allowedDeliveryCountries,h as deliveryAddressSpecification,a as personalDetailsRequiredFields,p as privacyPolicyUrlMap,_ as termsAndConditionsUrlMap};
2
2
  //# sourceMappingURL=config.js.map
@@ -1,2 +1,2 @@
1
- import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as e}from"../internal/UIElement/UIElement.js";import o from"./components/Challenge/PrepareChallenge3DS2.js";import{THREEDS2_ERROR as r,THREEDS2_CHALLENGE_ERROR as s,THREEDS2_FULL as n,DEFAULT_CHALLENGE_WINDOW_SIZE as i,THREEDS2_CHALLENGE as a}from"./constants.js";import{existy as p}from"../../utils/commonUtils.js";import{hasOwnProperty as l}from"../../utils/hasOwnProperty.js";import{TxVariants as m}from"../tx-variants.js";import c,{API_ERROR as u}from"../../core/Errors/AdyenCheckoutError.js";import{Analytics3DS2Errors as h,ANALYTICS_ERROR_TYPE as y,ANALYTICS_RENDERED_STR as d,Analytics3DS2Events as A}from"../../core/Analytics/constants.js";import{CoreProvider as f}from"../../core/Context/CoreProvider.js";function C(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}class D extends e{onComplete(t){t&&super.onComplete(t),this.unmount()}render(){if(!p(this.props.paymentData)){const t=l(this.props,"isMDFlow")?"paymentData":"authorisationToken";return this.props.onError(new c(u,`No ${t} received. 3DS2 Challenge cannot proceed`)),this.submitAnalytics({type:r,code:h.ACTION_IS_MISSING_PAYMENT_DATA,errorType:y.apiError,message:`${s}: Missing 'paymentData' property from threeDS2 action`}),null}return t(f,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},t(o,{...this.props,onComplete:this.onComplete,onSubmitAnalytics:this.submitAnalytics,isMDFlow:this.props.paymentData.length<15,onActionHandled:this.onActionHandled}))}constructor(...t){super(...t),C(this,"submitAnalytics",(t=>{t.type!==d&&super.submitAnalytics(t)})),C(this,"onActionHandled",(t=>{this.submitAnalytics({type:n,message:t.actionDescription,subtype:A.CHALLENGE_IFRAME_LOADED}),super.onActionHandled(t)}))}}C(D,"type",m.threeDS2Challenge),C(D,"defaultProps",{dataKey:"threeDSResult",size:i,type:a});export{D as default};
1
+ import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as e}from"../internal/UIElement/UIElement.js";import o from"./components/Challenge/PrepareChallenge3DS2.js";import{THREEDS2_CHALLENGE_ERROR as r,THREEDS2_ERROR as s,THREEDS2_FULL as n,THREEDS2_CHALLENGE as i,DEFAULT_CHALLENGE_WINDOW_SIZE as a}from"./constants.js";import{existy as p}from"../../utils/commonUtils.js";import{hasOwnProperty as l}from"../../utils/hasOwnProperty.js";import{TxVariants as m}from"../tx-variants.js";import c,{API_ERROR as u}from"../../core/Errors/AdyenCheckoutError.js";import{ANALYTICS_ERROR_TYPE as h,Analytics3DS2Errors as y,ANALYTICS_RENDERED_STR as d,Analytics3DS2Events as A}from"../../core/Analytics/constants.js";import{CoreProvider as f}from"../../core/Context/CoreProvider.js";function C(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}class D extends e{onComplete(t){t&&super.onComplete(t),this.unmount()}render(){if(!p(this.props.paymentData)){const t=l(this.props,"isMDFlow")?"paymentData":"authorisationToken";return this.props.onError(new c(u,`No ${t} received. 3DS2 Challenge cannot proceed`)),this.submitAnalytics({type:s,code:y.ACTION_IS_MISSING_PAYMENT_DATA,errorType:h.apiError,message:`${r}: Missing 'paymentData' property from threeDS2 action`}),null}return t(f,{i18n:this.props.i18n,loadingContext:this.props.loadingContext,resources:this.resources},t(o,{...this.props,onComplete:this.onComplete,onSubmitAnalytics:this.submitAnalytics,isMDFlow:this.props.paymentData.length<15,onActionHandled:this.onActionHandled}))}constructor(...t){super(...t),C(this,"submitAnalytics",(t=>{t.type!==d&&super.submitAnalytics(t)})),C(this,"onActionHandled",(t=>{this.submitAnalytics({type:n,message:t.actionDescription,subtype:A.CHALLENGE_IFRAME_LOADED}),super.onActionHandled(t)}))}}C(D,"type",m.threeDS2Challenge),C(D,"defaultProps",{dataKey:"threeDSResult",size:a,type:i});export{D as default};
2
2
  //# sourceMappingURL=ThreeDS2Challenge.js.map
@@ -1,2 +1,2 @@
1
- import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as e}from"../internal/UIElement/UIElement.js";import r from"./components/DeviceFingerprint/PrepareFingerprint3DS2.js";import i from"./callSubmit3DS2Fingerprint.js";import{existy as n}from"../../utils/commonUtils.js";import{TxVariants as o}from"../tx-variants.js";import s,{API_ERROR as p}from"../../core/Errors/AdyenCheckoutError.js";import{Analytics3DS2Errors as a,ANALYTICS_ERROR_TYPE as m,ANALYTICS_RENDERED_STR as l,Analytics3DS2Events as c}from"../../core/Analytics/constants.js";import{THREEDS2_ERROR as u,THREEDS2_FINGERPRINT_ERROR as y,THREEDS2_FULL as d,THREEDS2_FINGERPRINT as h}from"./constants.js";function A(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}class D extends e{onComplete(t){super.onComplete(t),this.unmount()}render(){return n(this.props.paymentData)?t(r,{...this.props,onComplete:this.props.isMDFlow?this.onComplete:this.callSubmit3DS2Fingerprint,onSubmitAnalytics:this.submitAnalytics,isMDFlow:this.props.paymentData.length<15,onActionHandled:this.onActionHandled}):(this.props.onError(new s(p,"No paymentData received. 3DS2 Fingerprint cannot proceed")),this.submitAnalytics({type:u,code:a.ACTION_IS_MISSING_PAYMENT_DATA,errorType:m.apiError,message:`${y}: Missing 'paymentData' property from threeDS2 action`}),null)}constructor(...t){super(...t),A(this,"callSubmit3DS2Fingerprint",i.bind(this)),A(this,"submitAnalytics",(t=>{t.type!==l&&super.submitAnalytics(t)})),A(this,"onActionHandled",(t=>{this.submitAnalytics({type:d,message:t.actionDescription,subtype:c.FINGERPRINT_IFRAME_LOADED}),super.onActionHandled(t)}))}}A(D,"type",o.threeDS2Fingerprint),A(D,"defaultProps",{dataKey:"fingerprintResult",type:h});export{D as default};
1
+ import{createElement as t}from"../../external/preact/dist/preact.js";import{UIElement as e}from"../internal/UIElement/UIElement.js";import r from"./components/DeviceFingerprint/PrepareFingerprint3DS2.js";import i from"./callSubmit3DS2Fingerprint.js";import{existy as n}from"../../utils/commonUtils.js";import{TxVariants as o}from"../tx-variants.js";import s,{API_ERROR as p}from"../../core/Errors/AdyenCheckoutError.js";import{ANALYTICS_ERROR_TYPE as a,Analytics3DS2Errors as m,ANALYTICS_RENDERED_STR as l,Analytics3DS2Events as c}from"../../core/Analytics/constants.js";import{THREEDS2_FINGERPRINT_ERROR as u,THREEDS2_ERROR as y,THREEDS2_FULL as d,THREEDS2_FINGERPRINT as h}from"./constants.js";function A(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}class D extends e{onComplete(t){super.onComplete(t),this.unmount()}render(){return n(this.props.paymentData)?t(r,{...this.props,onComplete:this.props.isMDFlow?this.onComplete:this.callSubmit3DS2Fingerprint,onSubmitAnalytics:this.submitAnalytics,isMDFlow:this.props.paymentData.length<15,onActionHandled:this.onActionHandled}):(this.props.onError(new s(p,"No paymentData received. 3DS2 Fingerprint cannot proceed")),this.submitAnalytics({type:y,code:m.ACTION_IS_MISSING_PAYMENT_DATA,errorType:a.apiError,message:`${u}: Missing 'paymentData' property from threeDS2 action`}),null)}constructor(...t){super(...t),A(this,"callSubmit3DS2Fingerprint",i.bind(this)),A(this,"submitAnalytics",(t=>{t.type!==l&&super.submitAnalytics(t)})),A(this,"onActionHandled",(t=>{this.submitAnalytics({type:d,message:t.actionDescription,subtype:c.FINGERPRINT_IFRAME_LOADED}),super.onActionHandled(t)}))}}A(D,"type",o.threeDS2Fingerprint),A(D,"defaultProps",{dataKey:"fingerprintResult",type:h});export{D as default};
2
2
  //# sourceMappingURL=ThreeDS2DeviceFingerprint.js.map
@@ -1,2 +1,2 @@
1
- import{httpPost as e}from"../../core/Services/http.js";import{pick as t}from"../../utils/commonUtils.js";import{THREEDS2_ERROR as o,THREEDS2_FINGERPRINT_SUBMIT as i}from"./constants.js";import{Analytics3DS2Errors as r,ANALYTICS_ERROR_TYPE as n}from"../../core/Analytics/constants.js";import{API_ERROR_CODE as s}from"../../core/Services/sessions/constants.js";function a({data:a}){e({path:`v1/submitThreeDS2Fingerprint?token=${this.props.clientKey}`,loadingContext:this.props.loadingContext,errorLevel:"fatal",errorCode:s.submitThreeDS2Fingerprint},{...a}).then((e=>{let s;if("completed"===e.type){const{details:t}=e;return e.details?this.onComplete({data:{details:t}}):(console.debug('Handled Error::callSubmit3DS2Fingerprint::FAILED:: no details object in a response indicating either a "frictionless" flow, or a "refused" response. resData=',e),s={type:o,code:r.NO_DETAILS_FOR_FRICTIONLESS_OR_REFUSED,errorType:n.apiError,message:`${i}: no details object in a response indicating either a "frictionless" flow, or a "refused" response`},void this.submitAnalytics(s))}if(!e.action)return console.debug('Handled Error::callSubmit3DS2Fingerprint::FAILED:: no action object in a response indicating a "challenge". resData=',e),s={type:o,code:r.NO_ACTION_FOR_CHALLENGE,errorType:n.apiError,message:`${i}: no action object in a response indicating a "challenge" flow`},void this.submitAnalytics(s);const a=this.props.elementRef??this;return a?"threeDS2"===e.action?.type?a.handleAction(e.action,t("challengeWindowSize").from(this.props)):"redirect"===e.action?.type?a.handleAction(e.action):void 0:(console.debug("Handled Error::callSubmit3DS2Fingerprint::FAILED:: no actionHandler"),s={type:o,code:r.NO_COMPONENT_FOR_ACTION,errorType:n.sdkError,message:`${i}: no component defined to handle the action response`},void this.submitAnalytics(s))})).catch((e=>{this.handleError(e)}))}export{a as default};
1
+ import{httpPost as e}from"../../core/Services/http.js";import{pick as t}from"../../utils/commonUtils.js";import{THREEDS2_FINGERPRINT_SUBMIT as o,THREEDS2_ERROR as i}from"./constants.js";import{ANALYTICS_ERROR_TYPE as r,Analytics3DS2Errors as n}from"../../core/Analytics/constants.js";import{API_ERROR_CODE as s}from"../../core/Services/sessions/constants.js";function a({data:a}){e({path:`v1/submitThreeDS2Fingerprint?token=${this.props.clientKey}`,loadingContext:this.props.loadingContext,errorLevel:"fatal",errorCode:s.submitThreeDS2Fingerprint},{...a}).then((e=>{let s;if("completed"===e.type){const{details:t}=e;return e.details?this.onComplete({data:{details:t}}):(console.debug('Handled Error::callSubmit3DS2Fingerprint::FAILED:: no details object in a response indicating either a "frictionless" flow, or a "refused" response. resData=',e),s={type:i,code:n.NO_DETAILS_FOR_FRICTIONLESS_OR_REFUSED,errorType:r.apiError,message:`${o}: no details object in a response indicating either a "frictionless" flow, or a "refused" response`},void this.submitAnalytics(s))}if(!e.action)return console.debug('Handled Error::callSubmit3DS2Fingerprint::FAILED:: no action object in a response indicating a "challenge". resData=',e),s={type:i,code:n.NO_ACTION_FOR_CHALLENGE,errorType:r.apiError,message:`${o}: no action object in a response indicating a "challenge" flow`},void this.submitAnalytics(s);const a=this.props.elementRef??this;return a?"threeDS2"===e.action?.type?a.handleAction(e.action,t("challengeWindowSize").from(this.props)):"redirect"===e.action?.type?a.handleAction(e.action):void 0:(console.debug("Handled Error::callSubmit3DS2Fingerprint::FAILED:: no actionHandler"),s={type:i,code:n.NO_COMPONENT_FOR_ACTION,errorType:r.sdkError,message:`${o}: no component defined to handle the action response`},void this.submitAnalytics(s))})).catch((e=>{this.handleError(e)}))}export{a as default};
2
2
  //# sourceMappingURL=callSubmit3DS2Fingerprint.js.map
@@ -1,2 +1,2 @@
1
- import{Component as e,createElement as s}from"../../../../external/preact/dist/preact.js";import t from"../../../../_virtual/index.js";import r from"../../../internal/IFrame/Iframe.js";import a from"../../../internal/Spinner/Spinner.js";import n from"../Form/ThreeDS2Form.js";import i from"../../../../utils/get-process-message-handler.js";import{encodeBase64URL as o}from"../utils.js";import l from"../../../../utils/promiseTimeout.js";import{CHALLENGE_TIMEOUT_REJECT_OBJECT as m,CHALLENGE_TIMEOUT as c,THREEDS2_NUM as h}from"../../constants.js";function p(e,s,t){return s in e?Object.defineProperty(e,s,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[s]=t,e}const d="threeDSIframe";class g extends e{get3DS2ChallengePromise(){return new Promise(((e,s)=>{this.processMessageHandler=i(this.props.postMessageDomain,e,s,"challengeResult"),window.addEventListener("message",this.processMessageHandler)}))}componentDidMount(){this.challengePromise=l(c,this.get3DS2ChallengePromise(),m),this.challengePromise.promise.then((e=>{window.removeEventListener("message",this.processMessageHandler),this.props.onCompleteChallenge(e)})).catch((e=>{window.removeEventListener("message",this.processMessageHandler),this.props.onErrorChallenge(e)}))}componentWillUnmount(){this.challengePromise&&this.challengePromise.cancel(),window.removeEventListener("message",this.processMessageHandler)}render({acsURL:e,cReqData:i,iframeSizeArr:o,onFormSubmit:l},{base64URLencodedData:m,status:c}){const[h,p]=o;return s("div",{className:t(["adyen-checkout__threeds2__challenge",`adyen-checkout__threeds2__challenge--${i.challengeWindowSize}`])},"iframeLoaded"!==c&&s(a,null),s(r,{name:d,width:h,height:p,callback:this.iframeCallback}),s(n,{name:"cReqForm",action:e,target:d,inputName:"creq",inputValue:m,onFormSubmit:l}))}constructor(e){super(e),p(this,"processMessageHandler",void 0),p(this,"challengePromise",void 0),p(this,"iframeCallback",(()=>{this.setState({status:"iframeLoaded"}),"init"===this.state.status&&this.props.onActionHandled?.({componentType:"3DS2Challenge",actionDescription:`${h} challenge iframe loaded`})}));const s=JSON.stringify(this.props.cReqData),t=o(s);this.state={base64URLencodedData:t,status:"init"}}}export{g as default};
1
+ import{Component as e,createElement as s}from"../../../../external/preact/dist/preact.js";import t from"../../../../_virtual/index.js";import r from"../../../internal/IFrame/Iframe.js";import a from"../../../internal/Spinner/Spinner.js";import n from"../Form/ThreeDS2Form.js";import i from"../../../../utils/get-process-message-handler.js";import{encodeBase64URL as o}from"../utils.js";import l from"../../../../utils/promiseTimeout.js";import{CHALLENGE_TIMEOUT as m,CHALLENGE_TIMEOUT_REJECT_OBJECT as c,THREEDS2_NUM as h}from"../../constants.js";function p(e,s,t){return s in e?Object.defineProperty(e,s,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[s]=t,e}const d="threeDSIframe";class g extends e{get3DS2ChallengePromise(){return new Promise(((e,s)=>{this.processMessageHandler=i(this.props.postMessageDomain,e,s,"challengeResult"),window.addEventListener("message",this.processMessageHandler)}))}componentDidMount(){this.challengePromise=l(m,this.get3DS2ChallengePromise(),c),this.challengePromise.promise.then((e=>{window.removeEventListener("message",this.processMessageHandler),this.props.onCompleteChallenge(e)})).catch((e=>{window.removeEventListener("message",this.processMessageHandler),this.props.onErrorChallenge(e)}))}componentWillUnmount(){this.challengePromise&&this.challengePromise.cancel(),window.removeEventListener("message",this.processMessageHandler)}render({acsURL:e,cReqData:i,iframeSizeArr:o,onFormSubmit:l},{base64URLencodedData:m,status:c}){const[h,p]=o;return s("div",{className:t(["adyen-checkout__threeds2__challenge",`adyen-checkout__threeds2__challenge--${i.challengeWindowSize}`])},"iframeLoaded"!==c&&s(a,null),s(r,{name:d,width:h,height:p,callback:this.iframeCallback}),s(n,{name:"cReqForm",action:e,target:d,inputName:"creq",inputValue:m,onFormSubmit:l}))}constructor(e){super(e),p(this,"processMessageHandler",void 0),p(this,"challengePromise",void 0),p(this,"iframeCallback",(()=>{this.setState({status:"iframeLoaded"}),"init"===this.state.status&&this.props.onActionHandled?.({componentType:"3DS2Challenge",actionDescription:`${h} challenge iframe loaded`})}));const s=JSON.stringify(this.props.cReqData),t=o(s);this.state={base64URLencodedData:t,status:"init"}}}export{g as default};
2
2
  //# sourceMappingURL=DoChallenge3DS2.js.map
@@ -1,2 +1,2 @@
1
- import{Component as e,createElement as r}from"../../../../external/preact/dist/preact.js";import t from"./DoChallenge3DS2.js";import{isErrorObject as s,createOldChallengeResolveData as o,createChallengeResolveData as n,prepareChallengeData as i}from"../utils.js";import a from"../../../internal/Img/Img.js";import{hasOwnProperty as l}from"../../../../utils/hasOwnProperty.js";import p from"../../../../core/Context/useImage.js";import c,{ERROR as h}from"../../../../core/Errors/AdyenCheckoutError.js";import{THREEDS2_ERROR as u,THREEDS2_CHALLENGE_ERROR as m,MISSING_TOKEN_IN_ACTION_MSG as d,THREEDS2_FULL as g,THREEDS2_NUM as S,THREEDS2_CHALLENGE as _}from"../../constants.js";import{isValidHttpUrl as E}from"../../../../utils/isValidURL.js";import{Analytics3DS2Errors as D,ANALYTICS_ERROR_TYPE as C,Analytics3DS2Events as I}from"../../../../core/Analytics/constants.js";function f(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}class T extends e{componentDidMount(){if(!s(this.state.challengeData)){const e="test"===this.props.environment&&this.props._environmentUrls?.api?.includes("http://localhost:8080"),{acsURL:r}=this.state.challengeData;if(!E(r,e)){this.setError({errorInfo:`${D.TOKEN_IS_MISSING_ACSURL}: ${this.props.i18n.get("err.gen.9102")}`},!0);const e={type:u,code:D.TOKEN_IS_MISSING_ACSURL,errorType:C.apiError,message:`${m}: Decoded token is missing a valid acsURL property`};return this.props.onSubmitAnalytics(e),void console.debug("### PrepareChallenge3DS2::exiting:: no valid acsURL")}const{acsTransID:t,messageVersion:s,threeDSServerTransID:o}=this.state.challengeData.cReqData;if(!t||!s||!o)return this.setError({errorInfo:`${D.TOKEN_IS_MISSING_OTHER_PROPS}: ${this.props.i18n.get("err.gen.9102")}`},!0),this.props.onSubmitAnalytics({type:u,code:D.TOKEN_IS_MISSING_OTHER_PROPS,errorType:C.apiError,message:`${m}: Decoded token is missing one or more of the following properties (acsTransID | messageVersion | threeDSServerTransID)`}),void console.debug("### PrepareChallenge3DS2::exiting:: missing one or more of the following properties (acsTransID | messageVersion | threeDSServerTransID)");this.setState({status:"performingChallenge"})}else{const e=this.state.challengeData.error,r=e.indexOf(d)>-1?D.ACTION_IS_MISSING_TOKEN:D.TOKEN_DECODE_OR_PARSING_FAILED;this.setError({errorInfo:e.indexOf(d)>-1?`${D.ACTION_IS_MISSING_TOKEN}: ${this.props.i18n.get("err.gen.9102")}`:`${D.TOKEN_DECODE_OR_PARSING_FAILED}: ${this.props.i18n.get("err.gen.9102")}`},!0),this.props.onSubmitAnalytics({type:u,code:r,errorType:C.apiError,message:`${m}: ${e}`}),console.debug("### PrepareChallenge3DS2::exiting:: no challengeData")}}setStatusComplete(e,r=null){this.setState({status:"complete"},(()=>{const t=(this.props.isMDFlow?o:n)(this.props.dataKey,e.transStatus,this.props.paymentData);let s;r&&console.debug("### PrepareChallenge3DS2::errorCodeObject::",r);const i=r||e;if(i.errorCode){const e={code:"timeout"===i.errorCode?D.THREEDS2_TIMEOUT:D.NO_TRANSSTATUS,errorType:"timeout"===i.errorCode?C.network:C.apiError};s={type:u,message:i.message,...e},this.props.onSubmitAnalytics(s)}let a;switch(e?.transStatus){case"Y":a="success";break;case"N":a="failed";break;case"U":a=r?"timeout":"cancelled"}e?.errorCode&&(a="noTransStatus"),s={type:g,message:`${S} challenge has completed`,subtype:I.CHALLENGE_COMPLETED,result:a},this.props.onSubmitAnalytics(s),this.props.onComplete(t)}))}setError(e,r){this.setState({status:"error",errorInfo:e.errorInfo}),r&&this.props.onError(new c(h,e.errorInfo,{cause:e.errorObj}))}render(e,{challengeData:s}){const o=p();return"performingChallenge"===this.state.status?r(t,{onCompleteChallenge:e=>{let r=null;if(l(e.result,"errorCode")&&e.result.errorCode.length&&(r={errorCode:e.result.errorCode,message:`${m}: ${e.result.errorDescription?e.result.errorDescription:"no transStatus could be retrieved"}`},this.props.isMDFlow&&this.props.onError(new c(h,`${m}: ${e.result.errorDescription?e.result.errorDescription:"no transStatus could be retrieved"}`,{cause:e.result.errorCode}))),!e.result)return this.setError({errorInfo:`${m}: ${this.props.i18n.get("3ds.chal.805",{values:{result:'"result"'}})}`,errorObj:e},!0),this.props.onSubmitAnalytics({type:u,code:D.CHALLENGE_RESOLVED_WITHOUT_RESULT_PROP,errorType:C.apiError,message:`${m}: challenge resolved without a "result" object`}),void console.debug('### PrepareChallenge3DS2::exiting:: challenge resolved without a "result" object');this.setStatusComplete(e.result,r)},onErrorChallenge:e=>{if(l(e,"errorCode")){const r={errorCode:e.errorCode,message:`${_}: ${e.errorCode}`};return this.props.isMDFlow&&this.props.onError(new c(h,`${m}: '3DS2 challenge timed out'`,{cause:e.errorCode})),void this.setStatusComplete(e.result,r)}},...s,onActionHandled:this.props.onActionHandled,onFormSubmit:this.onFormSubmit}):"error"===this.state.status?r("div",{className:"adyen-checkout__threeds2-challenge-error"},r(a,{className:"adyen-checkout__status__icon adyen-checkout__status__icon--error",src:o({imageFolder:"components/"})("error"),alt:""}),r("div",{className:"adyen-checkout__status__text"},this.state.errorInfo?this.state.errorInfo:this.props.i18n.get("error.message.unknown"))):null}constructor(e){if(super(e),f(this,"onFormSubmit",(e=>{this.props.onSubmitAnalytics({type:g,message:e,subtype:I.CHALLENGE_DATA_SENT})})),this.props.token){const e=i({token:this.props.token,size:this.props.challengeWindowSize||this.props.size});this.state={status:"init",challengeData:e}}else this.state={challengeData:{success:!1,error:d}},console.debug(`${m}: ${d}`)}}f(T,"defaultProps",{onComplete:()=>{},onError:()=>{},isMDFlow:!1});export{T as default};
1
+ import{Component as e,createElement as r}from"../../../../external/preact/dist/preact.js";import t from"./DoChallenge3DS2.js";import{isErrorObject as s,createOldChallengeResolveData as o,createChallengeResolveData as n,prepareChallengeData as i}from"../utils.js";import a from"../../../internal/Img/Img.js";import{hasOwnProperty as l}from"../../../../utils/hasOwnProperty.js";import p from"../../../../core/Context/useImage.js";import c,{ERROR as h}from"../../../../core/Errors/AdyenCheckoutError.js";import{THREEDS2_CHALLENGE_ERROR as u,THREEDS2_ERROR as m,MISSING_TOKEN_IN_ACTION_MSG as d,THREEDS2_NUM as g,THREEDS2_FULL as S,THREEDS2_CHALLENGE as _}from"../../constants.js";import{isValidHttpUrl as E}from"../../../../utils/isValidURL.js";import{Analytics3DS2Errors as D,ANALYTICS_ERROR_TYPE as C,Analytics3DS2Events as I}from"../../../../core/Analytics/constants.js";function f(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}class T extends e{componentDidMount(){if(!s(this.state.challengeData)){const e="test"===this.props.environment&&this.props._environmentUrls?.api?.includes("http://localhost:8080"),{acsURL:r}=this.state.challengeData;if(!E(r,e)){this.setError({errorInfo:`${D.TOKEN_IS_MISSING_ACSURL}: ${this.props.i18n.get("err.gen.9102")}`},!0);const e={type:m,code:D.TOKEN_IS_MISSING_ACSURL,errorType:C.apiError,message:`${u}: Decoded token is missing a valid acsURL property`};return this.props.onSubmitAnalytics(e),void console.debug("### PrepareChallenge3DS2::exiting:: no valid acsURL")}const{acsTransID:t,messageVersion:s,threeDSServerTransID:o}=this.state.challengeData.cReqData;if(!t||!s||!o)return this.setError({errorInfo:`${D.TOKEN_IS_MISSING_OTHER_PROPS}: ${this.props.i18n.get("err.gen.9102")}`},!0),this.props.onSubmitAnalytics({type:m,code:D.TOKEN_IS_MISSING_OTHER_PROPS,errorType:C.apiError,message:`${u}: Decoded token is missing one or more of the following properties (acsTransID | messageVersion | threeDSServerTransID)`}),void console.debug("### PrepareChallenge3DS2::exiting:: missing one or more of the following properties (acsTransID | messageVersion | threeDSServerTransID)");this.setState({status:"performingChallenge"})}else{const e=this.state.challengeData.error,r=e.indexOf(d)>-1?D.ACTION_IS_MISSING_TOKEN:D.TOKEN_DECODE_OR_PARSING_FAILED;this.setError({errorInfo:e.indexOf(d)>-1?`${D.ACTION_IS_MISSING_TOKEN}: ${this.props.i18n.get("err.gen.9102")}`:`${D.TOKEN_DECODE_OR_PARSING_FAILED}: ${this.props.i18n.get("err.gen.9102")}`},!0),this.props.onSubmitAnalytics({type:m,code:r,errorType:C.apiError,message:`${u}: ${e}`}),console.debug("### PrepareChallenge3DS2::exiting:: no challengeData")}}setStatusComplete(e,r=null){this.setState({status:"complete"},(()=>{const t=(this.props.isMDFlow?o:n)(this.props.dataKey,e.transStatus,this.props.paymentData);let s;r&&console.debug("### PrepareChallenge3DS2::errorCodeObject::",r);const i=r||e;if(i.errorCode){const e={code:"timeout"===i.errorCode?D.THREEDS2_TIMEOUT:D.NO_TRANSSTATUS,errorType:"timeout"===i.errorCode?C.network:C.apiError};s={type:m,message:i.message,...e},this.props.onSubmitAnalytics(s)}let a;switch(e?.transStatus){case"Y":a="success";break;case"N":a="failed";break;case"U":a=r?"timeout":"cancelled"}e?.errorCode&&(a="noTransStatus"),s={type:S,message:`${g} challenge has completed`,subtype:I.CHALLENGE_COMPLETED,result:a},this.props.onSubmitAnalytics(s),this.props.onComplete(t)}))}setError(e,r){this.setState({status:"error",errorInfo:e.errorInfo}),r&&this.props.onError(new c(h,e.errorInfo,{cause:e.errorObj}))}render(e,{challengeData:s}){const o=p();return"performingChallenge"===this.state.status?r(t,{onCompleteChallenge:e=>{let r=null;if(l(e.result,"errorCode")&&e.result.errorCode.length&&(r={errorCode:e.result.errorCode,message:`${u}: ${e.result.errorDescription?e.result.errorDescription:"no transStatus could be retrieved"}`},this.props.isMDFlow&&this.props.onError(new c(h,`${u}: ${e.result.errorDescription?e.result.errorDescription:"no transStatus could be retrieved"}`,{cause:e.result.errorCode}))),!e.result)return this.setError({errorInfo:`${u}: ${this.props.i18n.get("3ds.chal.805",{values:{result:'"result"'}})}`,errorObj:e},!0),this.props.onSubmitAnalytics({type:m,code:D.CHALLENGE_RESOLVED_WITHOUT_RESULT_PROP,errorType:C.apiError,message:`${u}: challenge resolved without a "result" object`}),void console.debug('### PrepareChallenge3DS2::exiting:: challenge resolved without a "result" object');this.setStatusComplete(e.result,r)},onErrorChallenge:e=>{if(l(e,"errorCode")){const r={errorCode:e.errorCode,message:`${_}: ${e.errorCode}`};return this.props.isMDFlow&&this.props.onError(new c(h,`${u}: '3DS2 challenge timed out'`,{cause:e.errorCode})),void this.setStatusComplete(e.result,r)}},...s,onActionHandled:this.props.onActionHandled,onFormSubmit:this.onFormSubmit}):"error"===this.state.status?r("div",{className:"adyen-checkout__threeds2-challenge-error"},r(a,{className:"adyen-checkout__status__icon adyen-checkout__status__icon--error",src:o({imageFolder:"components/"})("error"),alt:""}),r("div",{className:"adyen-checkout__status__text"},this.state.errorInfo?this.state.errorInfo:this.props.i18n.get("error.message.unknown"))):null}constructor(e){if(super(e),f(this,"onFormSubmit",(e=>{this.props.onSubmitAnalytics({type:S,message:e,subtype:I.CHALLENGE_DATA_SENT})})),this.props.token){const e=i({token:this.props.token,size:this.props.challengeWindowSize||this.props.size});this.state={status:"init",challengeData:e}}else this.state={challengeData:{success:!1,error:d}},console.debug(`${u}: ${d}`)}}f(T,"defaultProps",{onComplete:()=>{},onError:()=>{},isMDFlow:!1});export{T as default};
2
2
  //# sourceMappingURL=PrepareChallenge3DS2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PrepareChallenge3DS2.js","sources":["../../../../../../src/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport DoChallenge3DS2 from './DoChallenge3DS2';\nimport { createChallengeResolveData, prepareChallengeData, createOldChallengeResolveData, isErrorObject } from '../utils';\nimport { PrepareChallenge3DS2Props, PrepareChallenge3DS2State, StatusErrorInfoObject } from './types';\nimport { ChallengeData, ResultObject, ThreeDS2FlowObject, ErrorCodeObject } from '../../types';\nimport '../../ThreeDS2.scss';\nimport Img from '../../../internal/Img';\nimport './challenge.scss';\nimport { hasOwnProperty } from '../../../../utils/hasOwnProperty';\nimport useImage from '../../../../core/Context/useImage';\nimport AdyenCheckoutError, { ERROR } from '../../../../core/Errors/AdyenCheckoutError';\nimport { SendAnalyticsObject } from '../../../../core/Analytics/types';\nimport {\n THREEDS2_CHALLENGE,\n THREEDS2_CHALLENGE_ERROR,\n THREEDS2_FULL,\n THREEDS2_NUM,\n MISSING_TOKEN_IN_ACTION_MSG,\n THREEDS2_ERROR\n} from '../../constants';\nimport { isValidHttpUrl } from '../../../../utils/isValidURL';\nimport { ANALYTICS_ERROR_TYPE, Analytics3DS2Errors, Analytics3DS2Events } from '../../../../core/Analytics/constants';\nimport { ErrorObject } from '../../../../core/Errors/types';\n\nclass PrepareChallenge3DS2 extends Component<PrepareChallenge3DS2Props, PrepareChallenge3DS2State> {\n public static defaultProps = {\n onComplete: () => {},\n onError: () => {},\n isMDFlow: false\n };\n\n constructor(props) {\n super(props);\n\n if (this.props.token) {\n const challengeData: ChallengeData | ErrorObject = prepareChallengeData({\n token: this.props.token,\n size: this.props.challengeWindowSize || this.props.size // TODO confirm that this.props.size is legacy and can be removed\n });\n\n this.state = {\n status: 'init',\n challengeData: challengeData as ChallengeData\n };\n } else {\n // Will be picked up in componentDidMount\n this.state = { challengeData: { success: false, error: MISSING_TOKEN_IN_ACTION_MSG } };\n\n console.debug(`${THREEDS2_CHALLENGE_ERROR}: ${MISSING_TOKEN_IN_ACTION_MSG}`);\n }\n }\n\n public onFormSubmit = (msg: string) => {\n this.props.onSubmitAnalytics({\n type: THREEDS2_FULL,\n message: msg,\n subtype: Analytics3DS2Events.CHALLENGE_DATA_SENT\n });\n };\n\n componentDidMount() {\n const hasChallengeData = !isErrorObject(this.state.challengeData);\n\n if (hasChallengeData) {\n const shouldAllowHttpDomains =\n /** Allow http urls if in development and testing against localhost:8080 */\n (process.env.NODE_ENV === 'development' && process.env.__CLIENT_ENV__?.indexOf('localhost:8080') > -1) ||\n /**\n * Allows the checkoutshopper demo on localhost:8080 to work -\n * requires a configuration in localhost of environment: 'test', _environmentUrls: {api: 'http://localhost:8080/'}\n */\n (this.props.environment === 'test' && this.props._environmentUrls?.api?.includes('http://localhost:8080'));\n\n /**\n * Check the structure of the created challengeData\n */\n const { acsURL } = this.state.challengeData as ChallengeData;\n const hasValidAcsURL = isValidHttpUrl(acsURL, shouldAllowHttpDomains);\n\n // Only render component if we have an acsURL.\n if (!hasValidAcsURL) {\n // Set UI error & call onError callback\n this.setError(\n {\n errorInfo: `${Analytics3DS2Errors.TOKEN_IS_MISSING_ACSURL}: ${this.props.i18n.get('err.gen.9102')}` //\n },\n true\n );\n\n // Send error to analytics endpoint // TODO - check logs to see if this *ever* happens\n const errorCodeObject: SendAnalyticsObject = {\n type: THREEDS2_ERROR,\n code: Analytics3DS2Errors.TOKEN_IS_MISSING_ACSURL,\n errorType: ANALYTICS_ERROR_TYPE.apiError,\n message: `${THREEDS2_CHALLENGE_ERROR}: Decoded token is missing a valid acsURL property`\n // metadata: { acsURL } // NEW TODO - check acsURL isn't secret\n };\n this.props.onSubmitAnalytics(errorCodeObject);\n\n console.debug('### PrepareChallenge3DS2::exiting:: no valid acsURL');\n return;\n }\n\n const { acsTransID, messageVersion, threeDSServerTransID } = (this.state.challengeData as ChallengeData).cReqData;\n\n // Only render component if we have a acsTransID, messageVersion & threeDSServerTransID\n if (!acsTransID || !messageVersion || !threeDSServerTransID) {\n // Set UI error & call onError callback\n this.setError(\n {\n errorInfo: `${Analytics3DS2Errors.TOKEN_IS_MISSING_OTHER_PROPS}: ${this.props.i18n.get('err.gen.9102')}`\n // errorObj: this.state.challengeData // TODO Decide if we want to expose this data\n },\n true\n );\n\n // Send error to analytics endpoint // TODO - check logs to see if this *ever* happens\n this.props.onSubmitAnalytics({\n type: THREEDS2_ERROR,\n code: Analytics3DS2Errors.TOKEN_IS_MISSING_OTHER_PROPS,\n errorType: ANALYTICS_ERROR_TYPE.apiError,\n message: `${THREEDS2_CHALLENGE_ERROR}: Decoded token is missing one or more of the following properties (acsTransID | messageVersion | threeDSServerTransID)`\n } as SendAnalyticsObject);\n\n console.debug(\n '### PrepareChallenge3DS2::exiting:: missing one or more of the following properties (acsTransID | messageVersion | threeDSServerTransID)'\n );\n return;\n }\n\n // Proceed to allow component to render\n this.setState({ status: 'performingChallenge' });\n //\n } else {\n const errorMsg: string = (this.state.challengeData as ErrorObject).error;\n\n const errorCode =\n errorMsg.indexOf(MISSING_TOKEN_IN_ACTION_MSG) > -1\n ? Analytics3DS2Errors.ACTION_IS_MISSING_TOKEN\n : Analytics3DS2Errors.TOKEN_DECODE_OR_PARSING_FAILED;\n\n // Set UI error & call onError callback\n this.setError(\n {\n errorInfo:\n errorMsg.indexOf(MISSING_TOKEN_IN_ACTION_MSG) > -1\n ? `${Analytics3DS2Errors.ACTION_IS_MISSING_TOKEN}: ${this.props.i18n.get('err.gen.9102')}`\n : `${Analytics3DS2Errors.TOKEN_DECODE_OR_PARSING_FAILED}: ${this.props.i18n.get('err.gen.9102')}`\n // errorObj: this.state.challengeData // TODO Decide if we want to expose this data\n },\n true\n );\n\n // Send error to analytics endpoint // TODO - check logs to see if the base64 decoding errors *ever* happen\n this.props.onSubmitAnalytics({\n type: THREEDS2_ERROR,\n code: errorCode,\n errorType: ANALYTICS_ERROR_TYPE.apiError,\n message: `${THREEDS2_CHALLENGE_ERROR}: ${errorMsg}` // can be: 'Missing \"token\" property from threeDS2 action', 'not base64', 'malformed URI sequence' or 'Could not JSON parse token'\n });\n\n console.debug('### PrepareChallenge3DS2::exiting:: no challengeData');\n }\n }\n\n setStatusComplete(resultObj: ResultObject, errorCodeObject: ErrorCodeObject = null) {\n this.setState({ status: 'complete' }, () => {\n /**\n * Create the data in the way that the /details endpoint expects.\n * This is different for the flow triggered by the threeds2InMDFlow process than for the new, v67, 'threeDS2' action\n */\n const resolveDataFunction = this.props.isMDFlow ? createOldChallengeResolveData : createChallengeResolveData;\n const data = resolveDataFunction(this.props.dataKey, resultObj.transStatus, this.props.paymentData);\n\n if (errorCodeObject) {\n console.debug('### PrepareChallenge3DS2::errorCodeObject::', errorCodeObject);\n }\n\n let analyticsObject: SendAnalyticsObject;\n\n /** Are we in an \"error\" i.e. timeout or no transStatus, scenario? If so, submit analytics about it */\n const finalResObject = errorCodeObject ? errorCodeObject : resultObj;\n if (finalResObject.errorCode) {\n const errorTypeAndCode = {\n code: finalResObject.errorCode === 'timeout' ? Analytics3DS2Errors.THREEDS2_TIMEOUT : Analytics3DS2Errors.NO_TRANSSTATUS,\n errorType: finalResObject.errorCode === 'timeout' ? ANALYTICS_ERROR_TYPE.network : ANALYTICS_ERROR_TYPE.apiError\n };\n\n // Challenge process has timed out,\n // or, It's an error reported by the backend 'cos no transStatus could be retrieved // TODO - check logs to see if this *ever* happens\n analyticsObject = {\n type: THREEDS2_ERROR,\n message: (finalResObject as ErrorCodeObject).message,\n ...errorTypeAndCode\n };\n\n // Send error to analytics endpoint\n this.props.onSubmitAnalytics(analyticsObject);\n }\n\n /** Calculate \"result\" for analytics */\n let result: string;\n\n switch (resultObj?.transStatus) {\n case 'Y':\n result = 'success';\n break;\n case 'N':\n result = 'failed';\n break;\n case 'U':\n result = !errorCodeObject ? 'cancelled' : 'timeout';\n break;\n default:\n }\n if (resultObj?.errorCode) {\n result = 'noTransStatus';\n }\n\n /** Create log object - the process is completed, one way or another */\n analyticsObject = {\n type: THREEDS2_FULL,\n message: `${THREEDS2_NUM} challenge has completed`,\n subtype: Analytics3DS2Events.CHALLENGE_COMPLETED,\n result\n };\n\n // Send log to analytics endpoint\n this.props.onSubmitAnalytics(analyticsObject);\n\n /**\n * Equals call to onAdditionalDetails (except for in 3DS2InMDFlow)\n */\n this.props.onComplete(data);\n });\n }\n\n /**\n * Display error in the UI,\n * and, optionally, decide whether to send any of these errors to the merchant defined onError callback\n *\n * @param errorInfoObj -\n * @param isFatal -\n */\n setError(errorInfoObj: StatusErrorInfoObject, isFatal: boolean) {\n this.setState({ status: 'error', errorInfo: errorInfoObj.errorInfo });\n\n // Decide whether to call this.props.onError\n if (isFatal) {\n this.props.onError(new AdyenCheckoutError(ERROR, errorInfoObj.errorInfo, { cause: errorInfoObj.errorObj }));\n }\n }\n\n render(_, { challengeData }) {\n const getImage = useImage();\n if (this.state.status === 'performingChallenge') {\n return (\n <DoChallenge3DS2\n onCompleteChallenge={(challenge: ThreeDS2FlowObject) => {\n let errorCodeObject: ErrorCodeObject = null;\n\n // Challenge has resulted in an error (no transStatus could be retrieved) - but we still treat this as a valid scenario\n if (hasOwnProperty(challenge.result, 'errorCode') && challenge.result.errorCode.length) {\n // Tell the merchant there's been an error\n errorCodeObject = {\n errorCode: challenge.result.errorCode,\n message: `${THREEDS2_CHALLENGE_ERROR}: ${\n challenge.result.errorDescription ? challenge.result.errorDescription : 'no transStatus could be retrieved'\n }`\n };\n\n /**\n * NOTE: we can now use this.props.isMDFlow to decide if we want to send any of these errors to the onError handler\n * - this is problematic in the regular flow since merchants tend to treat any calls to their onError handler as 'fatal',\n * but in the MDFlow we control what the onError handler does.\n */\n if (this.props.isMDFlow) {\n this.props.onError(\n new AdyenCheckoutError(\n ERROR,\n `${THREEDS2_CHALLENGE_ERROR}: ${\n challenge.result.errorDescription\n ? challenge.result.errorDescription\n : 'no transStatus could be retrieved'\n }`,\n { cause: challenge.result.errorCode }\n )\n );\n }\n }\n\n /**\n * An object has been returned, parsed & accepted as legit (according to the rules in getProcessMessageHandler),\n * but the result prop on that object is missing\n */\n if (!challenge.result) {\n this.setError(\n {\n errorInfo: `${THREEDS2_CHALLENGE_ERROR}: ${this.props.i18n.get('3ds.chal.805', {\n values: { result: '\"result\"' }\n })}`,\n errorObj: challenge as unknown as ErrorObject\n },\n true\n );\n\n // Send error to analytics endpoint\n this.props.onSubmitAnalytics({\n type: THREEDS2_ERROR,\n code: Analytics3DS2Errors.CHALLENGE_RESOLVED_WITHOUT_RESULT_PROP,\n errorType: ANALYTICS_ERROR_TYPE.apiError,\n message: `${THREEDS2_CHALLENGE_ERROR}: challenge resolved without a \"result\" object`\n });\n\n console.debug('### PrepareChallenge3DS2::exiting:: challenge resolved without a \"result\" object');\n\n return;\n }\n\n // Proceed with call to onAdditionalDetails (except for in 3DS2InMDFlow)\n this.setStatusComplete(challenge.result, errorCodeObject);\n }}\n onErrorChallenge={(challenge: ThreeDS2FlowObject) => {\n /**\n * Called when challenge times-out (which is still a valid scenario)...\n */\n if (hasOwnProperty(challenge, 'errorCode')) {\n const timeoutObject: ErrorCodeObject = {\n errorCode: challenge.errorCode,\n message: `${THREEDS2_CHALLENGE}: ${challenge.errorCode}`\n };\n\n // see comment in onCompleteChallenge code block\n if (this.props.isMDFlow) {\n this.props.onError(\n new AdyenCheckoutError(ERROR, `${THREEDS2_CHALLENGE_ERROR}: '3DS2 challenge timed out'`, {\n cause: challenge.errorCode\n })\n );\n }\n\n this.setStatusComplete(challenge.result, timeoutObject);\n return;\n }\n }}\n {...challengeData}\n onActionHandled={this.props.onActionHandled}\n onFormSubmit={this.onFormSubmit}\n />\n );\n }\n\n if (this.state.status === 'error') {\n return (\n <div className=\"adyen-checkout__threeds2-challenge-error\">\n <Img\n className=\"adyen-checkout__status__icon adyen-checkout__status__icon--error\"\n src={getImage({\n imageFolder: 'components/'\n })('error')}\n alt={''}\n />\n <div className=\"adyen-checkout__status__text\">\n {this.state.errorInfo ? this.state.errorInfo : this.props.i18n.get('error.message.unknown')}\n </div>\n </div>\n );\n }\n\n return null;\n }\n}\n\nexport default PrepareChallenge3DS2;\n"],"names":["PrepareChallenge3DS2","Component","componentDidMount","isErrorObject","this","state","challengeData","shouldAllowHttpDomains","props","environment","_environmentUrls","api","includes","acsURL","isValidHttpUrl","setError","errorInfo","Analytics3DS2Errors","TOKEN_IS_MISSING_ACSURL","i18n","get","errorCodeObject","type","THREEDS2_ERROR","code","errorType","ANALYTICS_ERROR_TYPE","apiError","message","THREEDS2_CHALLENGE_ERROR","onSubmitAnalytics","console","debug","acsTransID","messageVersion","threeDSServerTransID","cReqData","TOKEN_IS_MISSING_OTHER_PROPS","setState","status","errorMsg","error","errorCode","indexOf","MISSING_TOKEN_IN_ACTION_MSG","ACTION_IS_MISSING_TOKEN","TOKEN_DECODE_OR_PARSING_FAILED","setStatusComplete","resultObj","data","isMDFlow","createOldChallengeResolveData","createChallengeResolveData","dataKey","transStatus","paymentData","analyticsObject","finalResObject","errorTypeAndCode","THREEDS2_TIMEOUT","NO_TRANSSTATUS","network","result","THREEDS2_FULL","THREEDS2_NUM","subtype","Analytics3DS2Events","CHALLENGE_COMPLETED","onComplete","errorInfoObj","isFatal","onError","AdyenCheckoutError","ERROR","cause","errorObj","render","_","getImage","useImage","h","DoChallenge3DS2","onCompleteChallenge","challenge","hasOwnProperty","length","errorDescription","values","CHALLENGE_RESOLVED_WITHOUT_RESULT_PROP","onErrorChallenge","timeoutObject","THREEDS2_CHALLENGE","onActionHandled","onFormSubmit","div","className","Img","src","imageFolder","alt","constructor","super","_define_property","msg","CHALLENGE_DATA_SENT","token","prepareChallengeData","size","challengeWindowSize","success","defaultProps"],"mappings":"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"}
1
+ {"version":3,"file":"PrepareChallenge3DS2.js","sources":["../../../../../../src/components/ThreeDS2/components/Challenge/PrepareChallenge3DS2.tsx"],"sourcesContent":["import { Component, h } from 'preact';\nimport DoChallenge3DS2 from './DoChallenge3DS2';\nimport { createChallengeResolveData, prepareChallengeData, createOldChallengeResolveData, isErrorObject } from '../utils';\nimport { PrepareChallenge3DS2Props, PrepareChallenge3DS2State, StatusErrorInfoObject } from './types';\nimport { ChallengeData, ResultObject, ThreeDS2FlowObject, ErrorCodeObject } from '../../types';\nimport '../../ThreeDS2.scss';\nimport Img from '../../../internal/Img';\nimport './challenge.scss';\nimport { hasOwnProperty } from '../../../../utils/hasOwnProperty';\nimport useImage from '../../../../core/Context/useImage';\nimport AdyenCheckoutError, { ERROR } from '../../../../core/Errors/AdyenCheckoutError';\nimport { SendAnalyticsObject } from '../../../../core/Analytics/types';\nimport {\n THREEDS2_CHALLENGE,\n THREEDS2_CHALLENGE_ERROR,\n THREEDS2_FULL,\n THREEDS2_NUM,\n MISSING_TOKEN_IN_ACTION_MSG,\n THREEDS2_ERROR\n} from '../../constants';\nimport { isValidHttpUrl } from '../../../../utils/isValidURL';\nimport { ANALYTICS_ERROR_TYPE, Analytics3DS2Errors, Analytics3DS2Events } from '../../../../core/Analytics/constants';\nimport { ErrorObject } from '../../../../core/Errors/types';\n\nclass PrepareChallenge3DS2 extends Component<PrepareChallenge3DS2Props, PrepareChallenge3DS2State> {\n public static defaultProps = {\n onComplete: () => {},\n onError: () => {},\n isMDFlow: false\n };\n\n constructor(props) {\n super(props);\n\n if (this.props.token) {\n const challengeData: ChallengeData | ErrorObject = prepareChallengeData({\n token: this.props.token,\n size: this.props.challengeWindowSize || this.props.size // TODO confirm that this.props.size is legacy and can be removed\n });\n\n this.state = {\n status: 'init',\n challengeData: challengeData as ChallengeData\n };\n } else {\n // Will be picked up in componentDidMount\n this.state = { challengeData: { success: false, error: MISSING_TOKEN_IN_ACTION_MSG } };\n\n console.debug(`${THREEDS2_CHALLENGE_ERROR}: ${MISSING_TOKEN_IN_ACTION_MSG}`);\n }\n }\n\n public onFormSubmit = (msg: string) => {\n this.props.onSubmitAnalytics({\n type: THREEDS2_FULL,\n message: msg,\n subtype: Analytics3DS2Events.CHALLENGE_DATA_SENT\n });\n };\n\n componentDidMount() {\n const hasChallengeData = !isErrorObject(this.state.challengeData);\n\n if (hasChallengeData) {\n const shouldAllowHttpDomains =\n /** Allow http urls if in development and testing against localhost:8080 */\n (process.env.NODE_ENV === 'development' && process.env.__CLIENT_ENV__?.indexOf('localhost:8080') > -1) ||\n /**\n * Allows the checkoutshopper demo on localhost:8080 to work -\n * requires a configuration in localhost of environment: 'test', _environmentUrls: {api: 'http://localhost:8080/'}\n */\n (this.props.environment === 'test' && this.props._environmentUrls?.api?.includes('http://localhost:8080'));\n\n /**\n * Check the structure of the created challengeData\n */\n const { acsURL } = this.state.challengeData as ChallengeData;\n const hasValidAcsURL = isValidHttpUrl(acsURL, shouldAllowHttpDomains);\n\n // Only render component if we have an acsURL.\n if (!hasValidAcsURL) {\n // Set UI error & call onError callback\n this.setError(\n {\n errorInfo: `${Analytics3DS2Errors.TOKEN_IS_MISSING_ACSURL}: ${this.props.i18n.get('err.gen.9102')}` //\n },\n true\n );\n\n // Send error to analytics endpoint // TODO - check logs to see if this *ever* happens\n const errorCodeObject: SendAnalyticsObject = {\n type: THREEDS2_ERROR,\n code: Analytics3DS2Errors.TOKEN_IS_MISSING_ACSURL,\n errorType: ANALYTICS_ERROR_TYPE.apiError,\n message: `${THREEDS2_CHALLENGE_ERROR}: Decoded token is missing a valid acsURL property`\n // metadata: { acsURL } // NEW TODO - check acsURL isn't secret\n };\n this.props.onSubmitAnalytics(errorCodeObject);\n\n console.debug('### PrepareChallenge3DS2::exiting:: no valid acsURL');\n return;\n }\n\n const { acsTransID, messageVersion, threeDSServerTransID } = (this.state.challengeData as ChallengeData).cReqData;\n\n // Only render component if we have a acsTransID, messageVersion & threeDSServerTransID\n if (!acsTransID || !messageVersion || !threeDSServerTransID) {\n // Set UI error & call onError callback\n this.setError(\n {\n errorInfo: `${Analytics3DS2Errors.TOKEN_IS_MISSING_OTHER_PROPS}: ${this.props.i18n.get('err.gen.9102')}`\n // errorObj: this.state.challengeData // TODO Decide if we want to expose this data\n },\n true\n );\n\n // Send error to analytics endpoint // TODO - check logs to see if this *ever* happens\n this.props.onSubmitAnalytics({\n type: THREEDS2_ERROR,\n code: Analytics3DS2Errors.TOKEN_IS_MISSING_OTHER_PROPS,\n errorType: ANALYTICS_ERROR_TYPE.apiError,\n message: `${THREEDS2_CHALLENGE_ERROR}: Decoded token is missing one or more of the following properties (acsTransID | messageVersion | threeDSServerTransID)`\n } as SendAnalyticsObject);\n\n console.debug(\n '### PrepareChallenge3DS2::exiting:: missing one or more of the following properties (acsTransID | messageVersion | threeDSServerTransID)'\n );\n return;\n }\n\n // Proceed to allow component to render\n this.setState({ status: 'performingChallenge' });\n //\n } else {\n const errorMsg: string = (this.state.challengeData as ErrorObject).error;\n\n const errorCode =\n errorMsg.indexOf(MISSING_TOKEN_IN_ACTION_MSG) > -1\n ? Analytics3DS2Errors.ACTION_IS_MISSING_TOKEN\n : Analytics3DS2Errors.TOKEN_DECODE_OR_PARSING_FAILED;\n\n // Set UI error & call onError callback\n this.setError(\n {\n errorInfo:\n errorMsg.indexOf(MISSING_TOKEN_IN_ACTION_MSG) > -1\n ? `${Analytics3DS2Errors.ACTION_IS_MISSING_TOKEN}: ${this.props.i18n.get('err.gen.9102')}`\n : `${Analytics3DS2Errors.TOKEN_DECODE_OR_PARSING_FAILED}: ${this.props.i18n.get('err.gen.9102')}`\n // errorObj: this.state.challengeData // TODO Decide if we want to expose this data\n },\n true\n );\n\n // Send error to analytics endpoint // TODO - check logs to see if the base64 decoding errors *ever* happen\n this.props.onSubmitAnalytics({\n type: THREEDS2_ERROR,\n code: errorCode,\n errorType: ANALYTICS_ERROR_TYPE.apiError,\n message: `${THREEDS2_CHALLENGE_ERROR}: ${errorMsg}` // can be: 'Missing \"token\" property from threeDS2 action', 'not base64', 'malformed URI sequence' or 'Could not JSON parse token'\n });\n\n console.debug('### PrepareChallenge3DS2::exiting:: no challengeData');\n }\n }\n\n setStatusComplete(resultObj: ResultObject, errorCodeObject: ErrorCodeObject = null) {\n this.setState({ status: 'complete' }, () => {\n /**\n * Create the data in the way that the /details endpoint expects.\n * This is different for the flow triggered by the threeds2InMDFlow process than for the new, v67, 'threeDS2' action\n */\n const resolveDataFunction = this.props.isMDFlow ? createOldChallengeResolveData : createChallengeResolveData;\n const data = resolveDataFunction(this.props.dataKey, resultObj.transStatus, this.props.paymentData);\n\n if (errorCodeObject) {\n console.debug('### PrepareChallenge3DS2::errorCodeObject::', errorCodeObject);\n }\n\n let analyticsObject: SendAnalyticsObject;\n\n /** Are we in an \"error\" i.e. timeout or no transStatus, scenario? If so, submit analytics about it */\n const finalResObject = errorCodeObject ? errorCodeObject : resultObj;\n if (finalResObject.errorCode) {\n const errorTypeAndCode = {\n code: finalResObject.errorCode === 'timeout' ? Analytics3DS2Errors.THREEDS2_TIMEOUT : Analytics3DS2Errors.NO_TRANSSTATUS,\n errorType: finalResObject.errorCode === 'timeout' ? ANALYTICS_ERROR_TYPE.network : ANALYTICS_ERROR_TYPE.apiError\n };\n\n // Challenge process has timed out,\n // or, It's an error reported by the backend 'cos no transStatus could be retrieved // TODO - check logs to see if this *ever* happens\n analyticsObject = {\n type: THREEDS2_ERROR,\n message: (finalResObject as ErrorCodeObject).message,\n ...errorTypeAndCode\n };\n\n // Send error to analytics endpoint\n this.props.onSubmitAnalytics(analyticsObject);\n }\n\n /** Calculate \"result\" for analytics */\n let result: string;\n\n switch (resultObj?.transStatus) {\n case 'Y':\n result = 'success';\n break;\n case 'N':\n result = 'failed';\n break;\n case 'U':\n result = !errorCodeObject ? 'cancelled' : 'timeout';\n break;\n default:\n }\n if (resultObj?.errorCode) {\n result = 'noTransStatus';\n }\n\n /** Create log object - the process is completed, one way or another */\n analyticsObject = {\n type: THREEDS2_FULL,\n message: `${THREEDS2_NUM} challenge has completed`,\n subtype: Analytics3DS2Events.CHALLENGE_COMPLETED,\n result\n };\n\n // Send log to analytics endpoint\n this.props.onSubmitAnalytics(analyticsObject);\n\n /**\n * Equals call to onAdditionalDetails (except for in 3DS2InMDFlow)\n */\n this.props.onComplete(data);\n });\n }\n\n /**\n * Display error in the UI,\n * and, optionally, decide whether to send any of these errors to the merchant defined onError callback\n *\n * @param errorInfoObj -\n * @param isFatal -\n */\n setError(errorInfoObj: StatusErrorInfoObject, isFatal: boolean) {\n this.setState({ status: 'error', errorInfo: errorInfoObj.errorInfo });\n\n // Decide whether to call this.props.onError\n if (isFatal) {\n this.props.onError(new AdyenCheckoutError(ERROR, errorInfoObj.errorInfo, { cause: errorInfoObj.errorObj }));\n }\n }\n\n render(_, { challengeData }) {\n const getImage = useImage();\n if (this.state.status === 'performingChallenge') {\n return (\n <DoChallenge3DS2\n onCompleteChallenge={(challenge: ThreeDS2FlowObject) => {\n let errorCodeObject: ErrorCodeObject = null;\n\n // Challenge has resulted in an error (no transStatus could be retrieved) - but we still treat this as a valid scenario\n if (hasOwnProperty(challenge.result, 'errorCode') && challenge.result.errorCode.length) {\n // Tell the merchant there's been an error\n errorCodeObject = {\n errorCode: challenge.result.errorCode,\n message: `${THREEDS2_CHALLENGE_ERROR}: ${\n challenge.result.errorDescription ? challenge.result.errorDescription : 'no transStatus could be retrieved'\n }`\n };\n\n /**\n * NOTE: we can now use this.props.isMDFlow to decide if we want to send any of these errors to the onError handler\n * - this is problematic in the regular flow since merchants tend to treat any calls to their onError handler as 'fatal',\n * but in the MDFlow we control what the onError handler does.\n */\n if (this.props.isMDFlow) {\n this.props.onError(\n new AdyenCheckoutError(\n ERROR,\n `${THREEDS2_CHALLENGE_ERROR}: ${\n challenge.result.errorDescription\n ? challenge.result.errorDescription\n : 'no transStatus could be retrieved'\n }`,\n { cause: challenge.result.errorCode }\n )\n );\n }\n }\n\n /**\n * An object has been returned, parsed & accepted as legit (according to the rules in getProcessMessageHandler),\n * but the result prop on that object is missing\n */\n if (!challenge.result) {\n this.setError(\n {\n errorInfo: `${THREEDS2_CHALLENGE_ERROR}: ${this.props.i18n.get('3ds.chal.805', {\n values: { result: '\"result\"' }\n })}`,\n errorObj: challenge as unknown as ErrorObject\n },\n true\n );\n\n // Send error to analytics endpoint\n this.props.onSubmitAnalytics({\n type: THREEDS2_ERROR,\n code: Analytics3DS2Errors.CHALLENGE_RESOLVED_WITHOUT_RESULT_PROP,\n errorType: ANALYTICS_ERROR_TYPE.apiError,\n message: `${THREEDS2_CHALLENGE_ERROR}: challenge resolved without a \"result\" object`\n });\n\n console.debug('### PrepareChallenge3DS2::exiting:: challenge resolved without a \"result\" object');\n\n return;\n }\n\n // Proceed with call to onAdditionalDetails (except for in 3DS2InMDFlow)\n this.setStatusComplete(challenge.result, errorCodeObject);\n }}\n onErrorChallenge={(challenge: ThreeDS2FlowObject) => {\n /**\n * Called when challenge times-out (which is still a valid scenario)...\n */\n if (hasOwnProperty(challenge, 'errorCode')) {\n const timeoutObject: ErrorCodeObject = {\n errorCode: challenge.errorCode,\n message: `${THREEDS2_CHALLENGE}: ${challenge.errorCode}`\n };\n\n // see comment in onCompleteChallenge code block\n if (this.props.isMDFlow) {\n this.props.onError(\n new AdyenCheckoutError(ERROR, `${THREEDS2_CHALLENGE_ERROR}: '3DS2 challenge timed out'`, {\n cause: challenge.errorCode\n })\n );\n }\n\n this.setStatusComplete(challenge.result, timeoutObject);\n return;\n }\n }}\n {...challengeData}\n onActionHandled={this.props.onActionHandled}\n onFormSubmit={this.onFormSubmit}\n />\n );\n }\n\n if (this.state.status === 'error') {\n return (\n <div className=\"adyen-checkout__threeds2-challenge-error\">\n <Img\n className=\"adyen-checkout__status__icon adyen-checkout__status__icon--error\"\n src={getImage({\n imageFolder: 'components/'\n })('error')}\n alt={''}\n />\n <div className=\"adyen-checkout__status__text\">\n {this.state.errorInfo ? this.state.errorInfo : this.props.i18n.get('error.message.unknown')}\n </div>\n </div>\n );\n }\n\n return null;\n }\n}\n\nexport default PrepareChallenge3DS2;\n"],"names":["PrepareChallenge3DS2","Component","componentDidMount","isErrorObject","this","state","challengeData","shouldAllowHttpDomains","props","environment","_environmentUrls","api","includes","acsURL","isValidHttpUrl","setError","errorInfo","Analytics3DS2Errors","TOKEN_IS_MISSING_ACSURL","i18n","get","errorCodeObject","type","THREEDS2_ERROR","code","errorType","ANALYTICS_ERROR_TYPE","apiError","message","THREEDS2_CHALLENGE_ERROR","onSubmitAnalytics","console","debug","acsTransID","messageVersion","threeDSServerTransID","cReqData","TOKEN_IS_MISSING_OTHER_PROPS","setState","status","errorMsg","error","errorCode","indexOf","MISSING_TOKEN_IN_ACTION_MSG","ACTION_IS_MISSING_TOKEN","TOKEN_DECODE_OR_PARSING_FAILED","setStatusComplete","resultObj","data","isMDFlow","createOldChallengeResolveData","createChallengeResolveData","dataKey","transStatus","paymentData","analyticsObject","finalResObject","errorTypeAndCode","THREEDS2_TIMEOUT","NO_TRANSSTATUS","network","result","THREEDS2_FULL","THREEDS2_NUM","subtype","Analytics3DS2Events","CHALLENGE_COMPLETED","onComplete","errorInfoObj","isFatal","onError","AdyenCheckoutError","ERROR","cause","errorObj","render","_","getImage","useImage","h","DoChallenge3DS2","onCompleteChallenge","challenge","hasOwnProperty","length","errorDescription","values","CHALLENGE_RESOLVED_WITHOUT_RESULT_PROP","onErrorChallenge","timeoutObject","THREEDS2_CHALLENGE","onActionHandled","onFormSubmit","div","className","Img","src","imageFolder","alt","constructor","super","_define_property","msg","CHALLENGE_DATA_SENT","token","prepareChallengeData","size","challengeWindowSize","success","defaultProps"],"mappings":"+9BAwBA,MAAMA,UAA6BC,EAoC/BC,iBAAAA,GAGI,IAF0BC,EAAcC,KAAKC,MAAMC,eAE7B,CAClB,MAAMC,EAO0B,SAA3BH,KAAKI,MAAMC,aAA0BL,KAAKI,MAAME,kBAAkBC,KAAKC,SAAS,0BAK/EC,OAAEA,GAAWT,KAAKC,MAAMC,cAI9B,IAHuBQ,EAAeD,EAAQN,GAGzB,CAEjBH,KAAKW,SACD,CACIC,UAAW,GAAGC,EAAoBC,4BAA4Bd,KAAKI,MAAMW,KAAKC,IAAI,oBAEtF,GAIJ,MAAMC,EAAuC,CACzCC,KAAMC,EACNC,KAAMP,EAAoBC,wBAC1BO,UAAWC,EAAqBC,SAChCC,QAAS,GAAGC,uDAMhB,OAHAzB,KAAKI,MAAMsB,kBAAkBT,QAE7BU,QAAQC,MAAM,sDAElB,CAEA,MAAMC,WAAEA,EAAUC,eAAEA,EAAcC,qBAAEA,GAA0B/B,KAAKC,MAAMC,cAAgC8B,SAGzG,IAAKH,IAAeC,IAAmBC,EAqBnC,OAnBA/B,KAAKW,SACD,CACIC,UAAW,GAAGC,EAAoBoB,iCAAiCjC,KAAKI,MAAMW,KAAKC,IAAI,oBAG3F,GAIJhB,KAAKI,MAAMsB,kBAAkB,CACzBR,KAAMC,EACNC,KAAMP,EAAoBoB,6BAC1BZ,UAAWC,EAAqBC,SAChCC,QAAS,GAAGC,kIAGhBE,QAAQC,MACJ,4IAMR5B,KAAKkC,SAAS,CAAEC,OAAQ,4BAErB,CACH,MAAMC,EAAmBpC,KAAMC,MAAMC,cAA8BmC,MAE7DC,EACFF,EAASG,QAAQC,IAA+B,EAC1C3B,EAAoB4B,wBACpB5B,EAAoB6B,+BAG9B1C,KAAKW,SACD,CACIC,UACIwB,EAASG,QAAQC,MACX,GAAG3B,EAAoB4B,4BAA4BzC,KAAKI,MAAMW,KAAKC,IAAI,kBACvE,GAAGH,EAAoB6B,mCAAmC1C,KAAKI,MAAMW,KAAKC,IAAI,oBAG5F,GAIJhB,KAAKI,MAAMsB,kBAAkB,CACzBR,KAAMC,EACNC,KAAMkB,EACNjB,UAAWC,EAAqBC,SAChCC,QAAS,GAAGC,MAA6BW,MAG7CT,QAAQC,MAAM,uDAClB,CACJ,CAEAe,iBAAAA,CAAkBC,EAAyB3B,EAAmC,MAC1EjB,KAAKkC,SAAS,CAAEC,OAAQ,aAAc,KAKlC,MACMU,GADsB7C,KAAKI,MAAM0C,SAAWC,EAAgCC,GACjDhD,KAAKI,MAAM6C,QAASL,EAAUM,YAAalD,KAAKI,MAAM+C,aAMvF,IAAIC,EAJAnC,GACAU,QAAQC,MAAM,8CAA+CX,GAMjE,MAAMoC,EAAiBpC,GAAoC2B,EAC3D,GAAIS,EAAef,UAAW,CAC1B,MAAMgB,EAAmB,CACrBlC,KAAmC,YAA7BiC,EAAef,UAA0BzB,EAAoB0C,iBAAmB1C,EAAoB2C,eAC1GnC,UAAwC,YAA7BgC,EAAef,UAA0BhB,EAAqBmC,QAAUnC,EAAqBC,UAK5G6B,EAAkB,CACdlC,KAAMC,EACNK,QAAU6B,EAAmC7B,WAC1C8B,GAIPtD,KAAKI,MAAMsB,kBAAkB0B,EACjC,CAGA,IAAIM,EAEJ,OAAQd,GAAWM,aACf,IAAK,IACDQ,EAAS,UACT,MACJ,IAAK,IACDA,EAAS,SACT,MACJ,IAAK,IACDA,EAAUzC,EAAgC,UAAd,YAIhC2B,GAAWN,YACXoB,EAAS,iBAIbN,EAAkB,CACdlC,KAAMyC,EACNnC,QAAS,GAAGoC,4BACZC,QAASC,EAAoBC,oBAC7BL,UAIJ1D,KAAKI,MAAMsB,kBAAkB0B,GAK7BpD,KAAKI,MAAM4D,WAAWnB,EAAAA,GAE9B,CASAlC,QAAAA,CAASsD,EAAqCC,GAC1ClE,KAAKkC,SAAS,CAAEC,OAAQ,QAASvB,UAAWqD,EAAarD,YAGrDsD,GACAlE,KAAKI,MAAM+D,QAAQ,IAAIC,EAAmBC,EAAOJ,EAAarD,UAAW,CAAE0D,MAAOL,EAAaM,WAEvG,CAEAC,MAAAA,CAAOC,GAAGvE,cAAEA,IACR,MAAMwE,EAAWC,IACjB,MAA0B,wBAAtB3E,KAAKC,MAAMkC,OAEPyC,EAACC,EAAAA,CACGC,oBAAsBC,IAClB,IAAI9D,EAAmC,KAoCvC,GAjCI+D,EAAeD,EAAUrB,OAAQ,cAAgBqB,EAAUrB,OAAOpB,UAAU2C,SAE5EhE,EAAkB,CACdqB,UAAWyC,EAAUrB,OAAOpB,UAC5Bd,QAAS,GAAGC,MACRsD,EAAUrB,OAAOwB,iBAAmBH,EAAUrB,OAAOwB,iBAAmB,uCAS5ElF,KAAKI,MAAM0C,UACX9C,KAAKI,MAAM+D,QACP,IAAIC,EACAC,EACA,GAAG5C,MACCsD,EAAUrB,OAAOwB,iBACXH,EAAUrB,OAAOwB,iBACjB,sCAEV,CAAEZ,MAAOS,EAAUrB,OAAOpB,eAUrCyC,EAAUrB,OAqBX,OApBA1D,KAAKW,SACD,CACIC,UAAW,GAAGa,OAA8BzB,KAAKI,MAAMW,KAAKC,IAAI,eAAgB,CAC5EmE,OAAQ,CAAEzB,OAAQ,gBAEtBa,SAAUQ,IAEd,GAIJ/E,KAAKI,MAAMsB,kBAAkB,CACzBR,KAAMC,EACNC,KAAMP,EAAoBuE,uCAC1B/D,UAAWC,EAAqBC,SAChCC,QAAS,GAAGC,yDAGhBE,QAAQC,MAAM,oFAMlB5B,KAAK2C,kBAAkBoC,EAAUrB,OAAQzC,EAAAA,EAE7CoE,iBAAmBN,IAIf,GAAIC,EAAeD,EAAW,aAAc,CACxC,MAAMO,EAAiC,CACnChD,UAAWyC,EAAUzC,UACrBd,QAAS,GAAG+D,MAAuBR,EAAUzC,aAajD,OATItC,KAAKI,MAAM0C,UACX9C,KAAKI,MAAM+D,QACP,IAAIC,EAAmBC,EAAO,GAAG5C,gCAAwD,CACrF6C,MAAOS,EAAUzC,kBAK7BtC,KAAK2C,kBAAkBoC,EAAUrB,OAAQ4B,EAE7C,MAEApF,EACJsF,gBAAiBxF,KAAKI,MAAMoF,gBAC5BC,aAAczF,KAAKyF,eAKL,UAAtBzF,KAAKC,MAAMkC,OAEPyC,EAACc,MAAAA,CAAIC,UAAU,4CACXf,EAACgB,EAAAA,CACGD,UAAU,mEACVE,IAAKnB,EAAS,CACVoB,YAAa,eADZpB,CAEF,SACHqB,IAAK,KAETnB,EAACc,MAAAA,CAAIC,UAAU,gCACV3F,KAAKC,MAAMW,UAAYZ,KAAKC,MAAMW,UAAYZ,KAAKI,MAAMW,KAAKC,IAAI,2BAM5E,IACX,CAnVAgF,WAAAA,CAAY5F,GAGR,GAFA6F,MAAM7F,GAoBV8F,EAAOT,KAAAA,gBAAgBU,IACnBnG,KAAKI,MAAMsB,kBAAkB,CACzBR,KAAMyC,EACNnC,QAAS2E,EACTtC,QAASC,EAAoBsC,qBACjC,IAvBIpG,KAAKI,MAAMiG,MAAO,CAClB,MAAMnG,EAA6CoG,EAAqB,CACpED,MAAOrG,KAAKI,MAAMiG,MAClBE,KAAMvG,KAAKI,MAAMoG,qBAAuBxG,KAAKI,MAAMmG,OAGvDvG,KAAKC,MAAQ,CACTkC,OAAQ,OACRjC,cAAeA,QAInBF,KAAKC,MAAQ,CAAEC,cAAe,CAAEuG,SAAS,EAAOpE,MAAOG,IAEvDb,QAAQC,MAAM,GAAGH,MAA6Be,IAEtD,EAzBA0D,EADEtG,EACY8G,eAAe,CACzB1C,WAAY,OACZG,QAAS,OACTrB,UAAU"}
@@ -1,2 +1,2 @@
1
- import{Component as e,createElement as r}from"../../../../external/preact/dist/preact.js";import t from"../../../internal/IFrame/Iframe.js";import s from"../../../internal/Spinner/Spinner.js";import n from"../Form/ThreeDS2Form.js";import i from"../../../../utils/promiseTimeout.js";import o from"../../../../utils/get-process-message-handler.js";import{THREEDS_METHOD_TIMEOUT as a,THREEDS2_NUM as m,FAILED_METHOD_STATUS_RESOLVE_OBJECT_TIMEOUT as p}from"../../constants.js";import{encodeBase64URL as d}from"../utils.js";function h(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}const c="threeDSMethodIframe";class l extends e{get3DS2MethodPromise(){return new Promise(((e,r)=>{this.processMessageHandler=o(this.props.postMessageDomain,e,r,"fingerPrintResult"),window.addEventListener("message",this.processMessageHandler)}))}componentDidMount(){this.fingerPrintPromise=i(a,this.get3DS2MethodPromise(),p),this.fingerPrintPromise.promise.then((e=>{window.removeEventListener("message",this.processMessageHandler),this.props.onCompleteFingerprint(e)})).catch((e=>{window.removeEventListener("message",this.processMessageHandler),this.props.onErrorFingerprint(e)}))}componentWillUnmount(){this.fingerPrintPromise&&this.fingerPrintPromise.cancel(),window.removeEventListener("message",this.processMessageHandler)}render({threeDSMethodURL:e,onActionHandled:i,onFormSubmit:o},{base64URLencodedData:a}){return r("div",{className:"adyen-checkout__3ds2-device-fingerprint"},this.props.showSpinner&&r(s,null),r("div",{style:{display:"none"}},r(t,{name:c,callback:()=>{i?.({componentType:"3DS2Fingerprint",actionDescription:`${m} fingerprint iframe loaded`})}}),r(n,{name:"threeDSMethodForm",action:e,target:c,inputName:"threeDSMethodData",inputValue:a,onFormSubmit:o})))}constructor(e){super(e),h(this,"processMessageHandler",void 0),h(this,"fingerPrintPromise",void 0);const{threeDSServerTransID:r,threeDSMethodNotificationURL:t}=this.props,s=JSON.stringify({threeDSServerTransID:r,threeDSMethodNotificationURL:t}),n=d(s);this.state={base64URLencodedData:n}}}h(l,"defaultProps",{showSpinner:!0});export{l as default};
1
+ import{Component as e,createElement as r}from"../../../../external/preact/dist/preact.js";import t from"../../../internal/IFrame/Iframe.js";import s from"../../../internal/Spinner/Spinner.js";import n from"../Form/ThreeDS2Form.js";import i from"../../../../utils/promiseTimeout.js";import o from"../../../../utils/get-process-message-handler.js";import{FAILED_METHOD_STATUS_RESOLVE_OBJECT_TIMEOUT as a,THREEDS_METHOD_TIMEOUT as m,THREEDS2_NUM as p}from"../../constants.js";import{encodeBase64URL as d}from"../utils.js";function h(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}const c="threeDSMethodIframe";class l extends e{get3DS2MethodPromise(){return new Promise(((e,r)=>{this.processMessageHandler=o(this.props.postMessageDomain,e,r,"fingerPrintResult"),window.addEventListener("message",this.processMessageHandler)}))}componentDidMount(){this.fingerPrintPromise=i(m,this.get3DS2MethodPromise(),a),this.fingerPrintPromise.promise.then((e=>{window.removeEventListener("message",this.processMessageHandler),this.props.onCompleteFingerprint(e)})).catch((e=>{window.removeEventListener("message",this.processMessageHandler),this.props.onErrorFingerprint(e)}))}componentWillUnmount(){this.fingerPrintPromise&&this.fingerPrintPromise.cancel(),window.removeEventListener("message",this.processMessageHandler)}render({threeDSMethodURL:e,onActionHandled:i,onFormSubmit:o},{base64URLencodedData:a}){return r("div",{className:"adyen-checkout__3ds2-device-fingerprint"},this.props.showSpinner&&r(s,null),r("div",{style:{display:"none"}},r(t,{name:c,callback:()=>{i?.({componentType:"3DS2Fingerprint",actionDescription:`${p} fingerprint iframe loaded`})}}),r(n,{name:"threeDSMethodForm",action:e,target:c,inputName:"threeDSMethodData",inputValue:a,onFormSubmit:o})))}constructor(e){super(e),h(this,"processMessageHandler",void 0),h(this,"fingerPrintPromise",void 0);const{threeDSServerTransID:r,threeDSMethodNotificationURL:t}=this.props,s=JSON.stringify({threeDSServerTransID:r,threeDSMethodNotificationURL:t}),n=d(s);this.state={base64URLencodedData:n}}}h(l,"defaultProps",{showSpinner:!0});export{l as default};
2
2
  //# sourceMappingURL=DoFingerprint3DS2.js.map
@@ -1,2 +1,2 @@
1
- import{Component as e,createElement as t}from"../../../../external/preact/dist/preact.js";import r from"./DoFingerprint3DS2.js";import{isErrorObject as o,createOldFingerprintResolveData as s,createFingerprintResolveData as i,prepareFingerPrintData as n}from"../utils.js";import{isValidHttpUrl as a}from"../../../../utils/isValidURL.js";import{THREEDS2_FINGERPRINT_ERROR as p,MISSING_TOKEN_IN_ACTION_MSG as d,TIMEOUT as l,THREEDS2_ERROR as m,THREEDS2_FULL as h,THREEDS2_NUM as c,THREEDS2_FINGERPRINT as S}from"../../constants.js";import{Analytics3DS2Errors as D,ANALYTICS_ERROR_TYPE as u,Analytics3DS2Events as g}from"../../../../core/Analytics/constants.js";function f(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class C extends e{componentDidMount(){if(!o(this.state.fingerPrintData)){const e="test"===this.props.environment&&this.props._environmentUrls?.api?.includes("http://localhost:8080"),{threeDSMethodURL:t,threeDSMethodNotificationURL:r,postMessageDomain:o,threeDSServerTransID:s}=this.state.fingerPrintData;if(!a(t,e))return this.setStatusComplete({threeDSCompInd:"U"},{errorCode:D.TOKEN_IS_MISSING_THREEDSMETHODURL,message:`${p}: Decoded token is missing a valid threeDSMethodURL property`}),void console.debug("### PrepareFingerprint3DS2::exiting:: no valid threeDSMethodURL");const i=a(r,e),n=a(o,e),d=s?.length;if(!i||!n||!d)return this.setStatusComplete({threeDSCompInd:"N"},{errorCode:D.TOKEN_IS_MISSING_OTHER_PROPS,message:`${p}: Decoded token is missing one or more of the following properties (threeDSMethodNotificationURL | postMessageDomain | threeDSServerTransID)`}),void console.debug("### PrepareFingerprint3DS2::exiting:: Decoded token is missing one or more of the following properties (threeDSMethodNotificationURL | postMessageDomain | threeDSServerTransID)");this.setState({status:"retrievingFingerPrint"})}else{const e=this.state.fingerPrintData.error,t=e.indexOf(d)>-1?D.ACTION_IS_MISSING_TOKEN:D.TOKEN_DECODE_OR_PARSING_FAILED;this.setStatusComplete({threeDSCompInd:"N"},{errorCode:t,message:`${p}: ${e}`}),console.debug("### PrepareFingerprint3DS2:: token does not exist or could not be base64 decoded &/or JSON.parsed")}}setStatusComplete(e,t=null){this.setState({status:"complete"},(()=>{const r=(this.props.isMDFlow?s:i)(this.props.dataKey,e,this.props.paymentData);let o;const n=t||e;if(n.errorCode){const e={code:n.errorCode===l?D.THREEDS2_TIMEOUT:n.errorCode,errorType:n.errorCode===l?u.network:u.apiError};o={type:m,message:n.message,...e},this.props.onSubmitAnalytics(o)}let a;switch(e?.threeDSCompInd){case"Y":a="success";break;case"N":a=t?t.errorCode===l?l:"failedInternal":"failed";break;case"U":a="noThreeDSMethodURL"}o={type:h,message:`${c} fingerprinting has completed`,subtype:g.FINGERPRINT_COMPLETED,result:a},this.props.onSubmitAnalytics(o),this.props.onComplete(r)}))}render({showSpinner:e},{status:o,fingerPrintData:s}){return"retrievingFingerPrint"===o?t(r,{onCompleteFingerprint:e=>{this.setStatusComplete(e.result)},onErrorFingerprint:e=>{const t={errorCode:e.errorCode,message:`${S}: ${e.errorCode}`};this.setStatusComplete(e.result,t)},showSpinner:e,...s,onActionHandled:this.props.onActionHandled,onFormSubmit:this.onFormSubmit}):null}constructor(e){super(e),f(this,"onFormSubmit",(e=>{this.props.onSubmitAnalytics({type:h,message:e,subtype:g.FINGERPRINT_DATA_SENT})}));const{token:t,notificationURL:r}=this.props;if(t){const e=n({token:t,notificationURL:r});this.state={status:"init",fingerPrintData:e}}else this.state={fingerPrintData:{success:!1,error:d}},console.debug(`${p}: ${d}`)}}f(C,"type","scheme"),f(C,"defaultProps",{onComplete:()=>{},onError:()=>{},paymentData:"",showSpinner:!0,isMDFlow:!1});export{C as default};
1
+ import{Component as e,createElement as t}from"../../../../external/preact/dist/preact.js";import r from"./DoFingerprint3DS2.js";import{isErrorObject as o,createOldFingerprintResolveData as s,createFingerprintResolveData as i,prepareFingerPrintData as n}from"../utils.js";import{isValidHttpUrl as a}from"../../../../utils/isValidURL.js";import{THREEDS2_FINGERPRINT_ERROR as p,MISSING_TOKEN_IN_ACTION_MSG as d,TIMEOUT as l,THREEDS2_ERROR as m,THREEDS2_NUM as h,THREEDS2_FULL as c,THREEDS2_FINGERPRINT as S}from"../../constants.js";import{Analytics3DS2Errors as D,ANALYTICS_ERROR_TYPE as u,Analytics3DS2Events as g}from"../../../../core/Analytics/constants.js";function f(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}class C extends e{componentDidMount(){if(!o(this.state.fingerPrintData)){const e="test"===this.props.environment&&this.props._environmentUrls?.api?.includes("http://localhost:8080"),{threeDSMethodURL:t,threeDSMethodNotificationURL:r,postMessageDomain:o,threeDSServerTransID:s}=this.state.fingerPrintData;if(!a(t,e))return this.setStatusComplete({threeDSCompInd:"U"},{errorCode:D.TOKEN_IS_MISSING_THREEDSMETHODURL,message:`${p}: Decoded token is missing a valid threeDSMethodURL property`}),void console.debug("### PrepareFingerprint3DS2::exiting:: no valid threeDSMethodURL");const i=a(r,e),n=a(o,e),d=s?.length;if(!i||!n||!d)return this.setStatusComplete({threeDSCompInd:"N"},{errorCode:D.TOKEN_IS_MISSING_OTHER_PROPS,message:`${p}: Decoded token is missing one or more of the following properties (threeDSMethodNotificationURL | postMessageDomain | threeDSServerTransID)`}),void console.debug("### PrepareFingerprint3DS2::exiting:: Decoded token is missing one or more of the following properties (threeDSMethodNotificationURL | postMessageDomain | threeDSServerTransID)");this.setState({status:"retrievingFingerPrint"})}else{const e=this.state.fingerPrintData.error,t=e.indexOf(d)>-1?D.ACTION_IS_MISSING_TOKEN:D.TOKEN_DECODE_OR_PARSING_FAILED;this.setStatusComplete({threeDSCompInd:"N"},{errorCode:t,message:`${p}: ${e}`}),console.debug("### PrepareFingerprint3DS2:: token does not exist or could not be base64 decoded &/or JSON.parsed")}}setStatusComplete(e,t=null){this.setState({status:"complete"},(()=>{const r=(this.props.isMDFlow?s:i)(this.props.dataKey,e,this.props.paymentData);let o;const n=t||e;if(n.errorCode){const e={code:n.errorCode===l?D.THREEDS2_TIMEOUT:n.errorCode,errorType:n.errorCode===l?u.network:u.apiError};o={type:m,message:n.message,...e},this.props.onSubmitAnalytics(o)}let a;switch(e?.threeDSCompInd){case"Y":a="success";break;case"N":a=t?t.errorCode===l?l:"failedInternal":"failed";break;case"U":a="noThreeDSMethodURL"}o={type:c,message:`${h} fingerprinting has completed`,subtype:g.FINGERPRINT_COMPLETED,result:a},this.props.onSubmitAnalytics(o),this.props.onComplete(r)}))}render({showSpinner:e},{status:o,fingerPrintData:s}){return"retrievingFingerPrint"===o?t(r,{onCompleteFingerprint:e=>{this.setStatusComplete(e.result)},onErrorFingerprint:e=>{const t={errorCode:e.errorCode,message:`${S}: ${e.errorCode}`};this.setStatusComplete(e.result,t)},showSpinner:e,...s,onActionHandled:this.props.onActionHandled,onFormSubmit:this.onFormSubmit}):null}constructor(e){super(e),f(this,"onFormSubmit",(e=>{this.props.onSubmitAnalytics({type:c,message:e,subtype:g.FINGERPRINT_DATA_SENT})}));const{token:t,notificationURL:r}=this.props;if(t){const e=n({token:t,notificationURL:r});this.state={status:"init",fingerPrintData:e}}else this.state={fingerPrintData:{success:!1,error:d}},console.debug(`${p}: ${d}`)}}f(C,"type","scheme"),f(C,"defaultProps",{onComplete:()=>{},onError:()=>{},paymentData:"",showSpinner:!0,isMDFlow:!1});export{C as default};
2
2
  //# sourceMappingURL=PrepareFingerprint3DS2.js.map