@internetarchive/donation-form 0.5.18-alpha.1 → 0.5.18

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 (420) hide show
  1. package/LICENSE +661 -661
  2. package/README.md +115 -115
  3. package/dist/demo/braintree-endpoint-manager.d.ts +9 -9
  4. package/dist/demo/braintree-endpoint-manager.js +45 -45
  5. package/dist/demo/braintree-endpoint-manager.js.map +1 -1
  6. package/dist/demo/demo-analytics-handler.d.ts +17 -17
  7. package/dist/demo/demo-analytics-handler.js +13 -13
  8. package/dist/demo/demo-analytics-handler.js.map +1 -1
  9. package/dist/demo/submit-form-with.d.ts +7 -7
  10. package/dist/demo/submit-form-with.js +21 -21
  11. package/dist/demo/submit-form-with.js.map +1 -1
  12. package/dist/index.d.ts +7 -7
  13. package/dist/index.js +7 -7
  14. package/dist/index.js.map +1 -1
  15. package/dist/src/braintree-manager/braintree-interfaces.d.ts +147 -147
  16. package/dist/src/braintree-manager/braintree-interfaces.js +5 -5
  17. package/dist/src/braintree-manager/braintree-interfaces.js.map +1 -1
  18. package/dist/src/braintree-manager/braintree-manager.d.ts +124 -124
  19. package/dist/src/braintree-manager/braintree-manager.js +149 -149
  20. package/dist/src/braintree-manager/braintree-manager.js.map +1 -1
  21. package/dist/src/braintree-manager/payment-clients.d.ts +47 -47
  22. package/dist/src/braintree-manager/payment-clients.js +116 -116
  23. package/dist/src/braintree-manager/payment-clients.js.map +1 -1
  24. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-interface.d.ts +8 -8
  25. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-interface.js.map +1 -1
  26. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-delegate.d.ts +6 -6
  27. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-delegate.js.map +1 -1
  28. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-interface.d.ts +10 -10
  29. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-interface.js.map +1 -1
  30. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource.d.ts +21 -21
  31. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource.js +99 -99
  32. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource.js.map +1 -1
  33. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-manager.d.ts +10 -10
  34. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-manager.js +12 -12
  35. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-manager.js.map +1 -1
  36. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay.d.ts +20 -20
  37. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay.js +71 -71
  38. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay.js.map +1 -1
  39. package/dist/src/braintree-manager/payment-providers/credit-card/credit-card-interface.d.ts +16 -16
  40. package/dist/src/braintree-manager/payment-providers/credit-card/credit-card-interface.js.map +1 -1
  41. package/dist/src/braintree-manager/payment-providers/credit-card/credit-card.d.ts +29 -29
  42. package/dist/src/braintree-manager/payment-providers/credit-card/credit-card.js +99 -99
  43. package/dist/src/braintree-manager/payment-providers/credit-card/credit-card.js.map +1 -1
  44. package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-configuration.d.ts +11 -11
  45. package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-configuration.js +7 -7
  46. package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-configuration.js.map +1 -1
  47. package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-container.d.ts +34 -34
  48. package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-container.js +52 -52
  49. package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-container.js.map +1 -1
  50. package/dist/src/braintree-manager/payment-providers/google-pay-interface.d.ts +7 -7
  51. package/dist/src/braintree-manager/payment-providers/google-pay-interface.js.map +1 -1
  52. package/dist/src/braintree-manager/payment-providers/google-pay.d.ts +18 -18
  53. package/dist/src/braintree-manager/payment-providers/google-pay.js +40 -40
  54. package/dist/src/braintree-manager/payment-providers/google-pay.js.map +1 -1
  55. package/dist/src/braintree-manager/payment-providers/paypal/paypal-button-datasource.d.ts +145 -145
  56. package/dist/src/braintree-manager/payment-providers/paypal/paypal-button-datasource.js +60 -60
  57. package/dist/src/braintree-manager/payment-providers/paypal/paypal-button-datasource.js.map +1 -1
  58. package/dist/src/braintree-manager/payment-providers/paypal/paypal-interface.d.ts +11 -11
  59. package/dist/src/braintree-manager/payment-providers/paypal/paypal-interface.js.map +1 -1
  60. package/dist/src/braintree-manager/payment-providers/paypal/paypal.d.ts +23 -23
  61. package/dist/src/braintree-manager/payment-providers/paypal/paypal.js +46 -46
  62. package/dist/src/braintree-manager/payment-providers/paypal/paypal.js.map +1 -1
  63. package/dist/src/braintree-manager/payment-providers/venmo-interface.d.ts +6 -6
  64. package/dist/src/braintree-manager/payment-providers/venmo-interface.js.map +1 -1
  65. package/dist/src/braintree-manager/payment-providers/venmo.d.ts +28 -28
  66. package/dist/src/braintree-manager/payment-providers/venmo.js +50 -50
  67. package/dist/src/braintree-manager/payment-providers/venmo.js.map +1 -1
  68. package/dist/src/braintree-manager/payment-providers-interface.d.ts +16 -16
  69. package/dist/src/braintree-manager/payment-providers-interface.js.map +1 -1
  70. package/dist/src/braintree-manager/payment-providers.d.ts +45 -45
  71. package/dist/src/braintree-manager/payment-providers.js +105 -105
  72. package/dist/src/braintree-manager/payment-providers.js.map +1 -1
  73. package/dist/src/donation-form-controller.d.ts +116 -116
  74. package/dist/src/donation-form-controller.js +562 -562
  75. package/dist/src/donation-form-controller.js.map +1 -1
  76. package/dist/src/donation-form-error.d.ts +3 -3
  77. package/dist/src/donation-form-error.js +6 -6
  78. package/dist/src/donation-form-error.js.map +1 -1
  79. package/dist/src/donation-form.d.ts +120 -120
  80. package/dist/src/donation-form.js +530 -530
  81. package/dist/src/donation-form.js.map +1 -1
  82. package/dist/src/form-elements/badged-input.d.ts +32 -32
  83. package/dist/src/form-elements/badged-input.js +124 -124
  84. package/dist/src/form-elements/badged-input.js.map +1 -1
  85. package/dist/src/form-elements/contact-form/autocomplete-field-options.d.ts +1 -1
  86. package/dist/src/form-elements/contact-form/autocomplete-field-options.js.map +1 -1
  87. package/dist/src/form-elements/contact-form/contact-form.d.ts +53 -53
  88. package/dist/src/form-elements/contact-form/contact-form.js +428 -428
  89. package/dist/src/form-elements/contact-form/contact-form.js.map +1 -1
  90. package/dist/src/form-elements/contact-form/countries.d.ts +3 -3
  91. package/dist/src/form-elements/contact-form/countries.js +252 -252
  92. package/dist/src/form-elements/contact-form/countries.js.map +1 -1
  93. package/dist/src/form-elements/header/donation-form-header.d.ts +27 -27
  94. package/dist/src/form-elements/header/donation-form-header.js +97 -97
  95. package/dist/src/form-elements/header/donation-form-header.js.map +1 -1
  96. package/dist/src/form-elements/header/donation-summary.d.ts +11 -11
  97. package/dist/src/form-elements/header/donation-summary.js +57 -57
  98. package/dist/src/form-elements/header/donation-summary.js.map +1 -1
  99. package/dist/src/form-elements/payment-selector.d.ts +25 -25
  100. package/dist/src/form-elements/payment-selector.js +286 -286
  101. package/dist/src/form-elements/payment-selector.js.map +1 -1
  102. package/dist/src/form-elements/total-amount.d.ts +8 -8
  103. package/dist/src/form-elements/total-amount.js +47 -47
  104. package/dist/src/form-elements/total-amount.js.map +1 -1
  105. package/dist/src/modals/confirm-donation-modal-content.d.ts +31 -31
  106. package/dist/src/modals/confirm-donation-modal-content.js +168 -168
  107. package/dist/src/modals/confirm-donation-modal-content.js.map +1 -1
  108. package/dist/src/modals/error-modal-content.d.ts +14 -14
  109. package/dist/src/modals/error-modal-content.js +49 -49
  110. package/dist/src/modals/error-modal-content.js.map +1 -1
  111. package/dist/src/modals/upsell-modal-content.d.ts +32 -32
  112. package/dist/src/modals/upsell-modal-content.js +294 -294
  113. package/dist/src/modals/upsell-modal-content.js.map +1 -1
  114. package/dist/src/payment-flow-handlers/donation-flow-modal-manager.d.ts +181 -181
  115. package/dist/src/payment-flow-handlers/donation-flow-modal-manager.js +252 -252
  116. package/dist/src/payment-flow-handlers/donation-flow-modal-manager.js.map +1 -1
  117. package/dist/src/payment-flow-handlers/handlers/applepay-flow-handler.d.ts +21 -21
  118. package/dist/src/payment-flow-handlers/handlers/applepay-flow-handler.js +76 -76
  119. package/dist/src/payment-flow-handlers/handlers/applepay-flow-handler.js.map +1 -1
  120. package/dist/src/payment-flow-handlers/handlers/creditcard-flow-handler.d.ts +70 -70
  121. package/dist/src/payment-flow-handlers/handlers/creditcard-flow-handler.js +140 -140
  122. package/dist/src/payment-flow-handlers/handlers/creditcard-flow-handler.js.map +1 -1
  123. package/dist/src/payment-flow-handlers/handlers/googlepay-flow-handler.d.ts +22 -22
  124. package/dist/src/payment-flow-handlers/handlers/googlepay-flow-handler.js +74 -74
  125. package/dist/src/payment-flow-handlers/handlers/googlepay-flow-handler.js.map +1 -1
  126. package/dist/src/payment-flow-handlers/handlers/paypal-flow-handler.d.ts +52 -52
  127. package/dist/src/payment-flow-handlers/handlers/paypal-flow-handler.js +239 -239
  128. package/dist/src/payment-flow-handlers/handlers/paypal-flow-handler.js.map +1 -1
  129. package/dist/src/payment-flow-handlers/handlers/venmo-flow-handler.d.ts +30 -30
  130. package/dist/src/payment-flow-handlers/handlers/venmo-flow-handler.js +89 -89
  131. package/dist/src/payment-flow-handlers/handlers/venmo-flow-handler.js.map +1 -1
  132. package/dist/src/payment-flow-handlers/handlers/venmo-restoration-state-handler.d.ts +75 -75
  133. package/dist/src/payment-flow-handlers/handlers/venmo-restoration-state-handler.js +94 -94
  134. package/dist/src/payment-flow-handlers/handlers/venmo-restoration-state-handler.js.map +1 -1
  135. package/dist/src/payment-flow-handlers/payment-flow-handlers.d.ts +111 -111
  136. package/dist/src/payment-flow-handlers/payment-flow-handlers.js +107 -107
  137. package/dist/src/payment-flow-handlers/payment-flow-handlers.js.map +1 -1
  138. package/dist/src/recaptcha-manager/recaptcha-manager.d.ts +48 -48
  139. package/dist/src/recaptcha-manager/recaptcha-manager.js +88 -88
  140. package/dist/src/recaptcha-manager/recaptcha-manager.js.map +1 -1
  141. package/dist/src/util/promisedSleep.d.ts +1 -1
  142. package/dist/src/util/promisedSleep.js +3 -3
  143. package/dist/src/util/promisedSleep.js.map +1 -1
  144. package/dist/test/helpers/fillInContactForm.d.ts +2 -2
  145. package/dist/test/helpers/fillInContactForm.js +19 -19
  146. package/dist/test/helpers/fillInContactForm.js.map +1 -1
  147. package/dist/test/mocks/flow-handlers/individual-handlers/mock-applepay-flow-handler.d.ts +7 -7
  148. package/dist/test/mocks/flow-handlers/individual-handlers/mock-applepay-flow-handler.js +9 -9
  149. package/dist/test/mocks/flow-handlers/individual-handlers/mock-applepay-flow-handler.js.map +1 -1
  150. package/dist/test/mocks/flow-handlers/individual-handlers/mock-creditcard-flow-handler.d.ts +15 -15
  151. package/dist/test/mocks/flow-handlers/individual-handlers/mock-creditcard-flow-handler.js +32 -32
  152. package/dist/test/mocks/flow-handlers/individual-handlers/mock-creditcard-flow-handler.js.map +1 -1
  153. package/dist/test/mocks/flow-handlers/individual-handlers/mock-googlepay-flow-handler.d.ts +9 -9
  154. package/dist/test/mocks/flow-handlers/individual-handlers/mock-googlepay-flow-handler.js +15 -15
  155. package/dist/test/mocks/flow-handlers/individual-handlers/mock-googlepay-flow-handler.js.map +1 -1
  156. package/dist/test/mocks/flow-handlers/individual-handlers/mock-paypal-flow-handler.d.ts +15 -15
  157. package/dist/test/mocks/flow-handlers/individual-handlers/mock-paypal-flow-handler.js +30 -30
  158. package/dist/test/mocks/flow-handlers/individual-handlers/mock-paypal-flow-handler.js.map +1 -1
  159. package/dist/test/mocks/flow-handlers/individual-handlers/mock-venmo-flow-handler.d.ts +9 -9
  160. package/dist/test/mocks/flow-handlers/individual-handlers/mock-venmo-flow-handler.js +17 -17
  161. package/dist/test/mocks/flow-handlers/individual-handlers/mock-venmo-flow-handler.js.map +1 -1
  162. package/dist/test/mocks/flow-handlers/mock-payment-flow-handlers.d.ts +30 -30
  163. package/dist/test/mocks/flow-handlers/mock-payment-flow-handlers.js +29 -29
  164. package/dist/test/mocks/flow-handlers/mock-payment-flow-handlers.js.map +1 -1
  165. package/dist/test/mocks/mock-analytics-handler.d.ts +8 -0
  166. package/dist/test/mocks/mock-analytics-handler.js +10 -0
  167. package/dist/test/mocks/mock-analytics-handler.js.map +1 -0
  168. package/dist/test/mocks/mock-braintree-manager.d.ts +45 -45
  169. package/dist/test/mocks/mock-braintree-manager.js +71 -71
  170. package/dist/test/mocks/mock-braintree-manager.js.map +1 -1
  171. package/dist/test/mocks/mock-donation-info.d.ts +4 -4
  172. package/dist/test/mocks/mock-donation-info.js +10 -10
  173. package/dist/test/mocks/mock-donation-info.js.map +1 -1
  174. package/dist/test/mocks/mock-endpoint-manager.d.ts +12 -12
  175. package/dist/test/mocks/mock-endpoint-manager.js +19 -19
  176. package/dist/test/mocks/mock-endpoint-manager.js.map +1 -1
  177. package/dist/test/mocks/mock-hosted-fields-config.d.ts +4 -4
  178. package/dist/test/mocks/mock-hosted-fields-config.js +37 -37
  179. package/dist/test/mocks/mock-hosted-fields-config.js.map +1 -1
  180. package/dist/test/mocks/mock-hosted-fields-container.d.ts +13 -13
  181. package/dist/test/mocks/mock-hosted-fields-container.js +27 -27
  182. package/dist/test/mocks/mock-hosted-fields-container.js.map +1 -1
  183. package/dist/test/mocks/mock-lazy-loader.d.ts +15 -15
  184. package/dist/test/mocks/mock-lazy-loader.js +20 -20
  185. package/dist/test/mocks/mock-lazy-loader.js.map +1 -1
  186. package/dist/test/mocks/mock-modal-manager.d.ts +17 -17
  187. package/dist/test/mocks/mock-modal-manager.js +26 -26
  188. package/dist/test/mocks/mock-modal-manager.js.map +1 -1
  189. package/dist/test/mocks/mock-payment-clients.d.ts +29 -29
  190. package/dist/test/mocks/mock-payment-clients.js +78 -78
  191. package/dist/test/mocks/mock-payment-clients.js.map +1 -1
  192. package/dist/test/mocks/mock-paypal-button-renderer.d.ts +5 -5
  193. package/dist/test/mocks/mock-paypal-button-renderer.js +6 -6
  194. package/dist/test/mocks/mock-paypal-button-renderer.js.map +1 -1
  195. package/dist/test/mocks/mock-recaptcha-manager.d.ts +7 -7
  196. package/dist/test/mocks/mock-recaptcha-manager.js +14 -14
  197. package/dist/test/mocks/mock-recaptcha-manager.js.map +1 -1
  198. package/dist/test/mocks/models/mock-billing-info.d.ts +2 -2
  199. package/dist/test/mocks/models/mock-billing-info.js +9 -9
  200. package/dist/test/mocks/models/mock-billing-info.js.map +1 -1
  201. package/dist/test/mocks/models/mock-custom-fields.d.ts +2 -2
  202. package/dist/test/mocks/models/mock-custom-fields.js +7 -7
  203. package/dist/test/mocks/models/mock-custom-fields.js.map +1 -1
  204. package/dist/test/mocks/models/mock-customer-info.d.ts +2 -2
  205. package/dist/test/mocks/models/mock-customer-info.js +6 -6
  206. package/dist/test/mocks/models/mock-customer-info.js.map +1 -1
  207. package/dist/test/mocks/models/mock-donation-request.d.ts +2 -2
  208. package/dist/test/mocks/models/mock-donation-request.js +18 -18
  209. package/dist/test/mocks/models/mock-donation-request.js.map +1 -1
  210. package/dist/test/mocks/models/mock-success-response.d.ts +2 -2
  211. package/dist/test/mocks/models/mock-success-response.js +14 -14
  212. package/dist/test/mocks/models/mock-success-response.js.map +1 -1
  213. package/dist/test/mocks/payment-clients/mock-applepay-client.d.ts +21 -21
  214. package/dist/test/mocks/payment-clients/mock-applepay-client.js +72 -72
  215. package/dist/test/mocks/payment-clients/mock-applepay-client.js.map +1 -1
  216. package/dist/test/mocks/payment-clients/mock-applepay-payment.d.ts +6 -6
  217. package/dist/test/mocks/payment-clients/mock-applepay-payment.js +42 -42
  218. package/dist/test/mocks/payment-clients/mock-applepay-payment.js.map +1 -1
  219. package/dist/test/mocks/payment-clients/mock-applepay-paymentauthorizedevent.d.ts +22 -22
  220. package/dist/test/mocks/payment-clients/mock-applepay-paymentauthorizedevent.js +35 -35
  221. package/dist/test/mocks/payment-clients/mock-applepay-paymentauthorizedevent.js.map +1 -1
  222. package/dist/test/mocks/payment-clients/mock-applepay-session.d.ts +30 -30
  223. package/dist/test/mocks/payment-clients/mock-applepay-session.js +52 -52
  224. package/dist/test/mocks/payment-clients/mock-applepay-session.js.map +1 -1
  225. package/dist/test/mocks/payment-clients/mock-applepay-sessionmanager.d.ts +10 -10
  226. package/dist/test/mocks/payment-clients/mock-applepay-sessionmanager.js +12 -12
  227. package/dist/test/mocks/payment-clients/mock-applepay-sessionmanager.js.map +1 -1
  228. package/dist/test/mocks/payment-clients/mock-applepay-validatemerchantevent.d.ts +22 -22
  229. package/dist/test/mocks/payment-clients/mock-applepay-validatemerchantevent.js +34 -34
  230. package/dist/test/mocks/payment-clients/mock-applepay-validatemerchantevent.js.map +1 -1
  231. package/dist/test/mocks/payment-clients/mock-braintree-client.d.ts +14 -14
  232. package/dist/test/mocks/payment-clients/mock-braintree-client.js +19 -19
  233. package/dist/test/mocks/payment-clients/mock-braintree-client.js.map +1 -1
  234. package/dist/test/mocks/payment-clients/mock-data-collector.d.ts +11 -11
  235. package/dist/test/mocks/payment-clients/mock-data-collector.js +17 -17
  236. package/dist/test/mocks/payment-clients/mock-data-collector.js.map +1 -1
  237. package/dist/test/mocks/payment-clients/mock-googlepay-client.d.ts +22 -22
  238. package/dist/test/mocks/payment-clients/mock-googlepay-client.js +42 -42
  239. package/dist/test/mocks/payment-clients/mock-googlepay-client.js.map +1 -1
  240. package/dist/test/mocks/payment-clients/mock-googlepay-library.d.ts +10 -10
  241. package/dist/test/mocks/payment-clients/mock-googlepay-library.js +22 -22
  242. package/dist/test/mocks/payment-clients/mock-googlepay-library.js.map +1 -1
  243. package/dist/test/mocks/payment-clients/mock-grecaptcha.d.ts +23 -23
  244. package/dist/test/mocks/payment-clients/mock-grecaptcha.js +62 -62
  245. package/dist/test/mocks/payment-clients/mock-grecaptcha.js.map +1 -1
  246. package/dist/test/mocks/payment-clients/mock-hostedfields-client.d.ts +33 -33
  247. package/dist/test/mocks/payment-clients/mock-hostedfields-client.js +54 -54
  248. package/dist/test/mocks/payment-clients/mock-hostedfields-client.js.map +1 -1
  249. package/dist/test/mocks/payment-clients/mock-hostedfieldstateobject-generator.d.ts +1 -1
  250. package/dist/test/mocks/payment-clients/mock-hostedfieldstateobject-generator.js +50 -50
  251. package/dist/test/mocks/payment-clients/mock-hostedfieldstateobject-generator.js.map +1 -1
  252. package/dist/test/mocks/payment-clients/mock-hostedfieldtokenizepayload.d.ts +1 -1
  253. package/dist/test/mocks/payment-clients/mock-hostedfieldtokenizepayload.js +13 -13
  254. package/dist/test/mocks/payment-clients/mock-hostedfieldtokenizepayload.js.map +1 -1
  255. package/dist/test/mocks/payment-clients/mock-paypal-client.d.ts +23 -23
  256. package/dist/test/mocks/payment-clients/mock-paypal-client.js +62 -62
  257. package/dist/test/mocks/payment-clients/mock-paypal-client.js.map +1 -1
  258. package/dist/test/mocks/payment-clients/mock-paypal-library.d.ts +4 -4
  259. package/dist/test/mocks/payment-clients/mock-paypal-library.js +9 -9
  260. package/dist/test/mocks/payment-clients/mock-paypal-library.js.map +1 -1
  261. package/dist/test/mocks/payment-clients/mock-venmo-client.d.ts +22 -22
  262. package/dist/test/mocks/payment-clients/mock-venmo-client.js +36 -36
  263. package/dist/test/mocks/payment-clients/mock-venmo-client.js.map +1 -1
  264. package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-datasource-delegate.d.ts +10 -10
  265. package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-datasource-delegate.js +14 -14
  266. package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-datasource-delegate.js.map +1 -1
  267. package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-handler.d.ts +9 -9
  268. package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-handler.js +19 -19
  269. package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-handler.js.map +1 -1
  270. package/dist/test/mocks/payment-providers/individual-providers/mock-creditcard-handler.d.ts +18 -18
  271. package/dist/test/mocks/payment-providers/individual-providers/mock-creditcard-handler.js +41 -41
  272. package/dist/test/mocks/payment-providers/individual-providers/mock-creditcard-handler.js.map +1 -1
  273. package/dist/test/mocks/payment-providers/individual-providers/mock-googlepay-handler.d.ts +8 -8
  274. package/dist/test/mocks/payment-providers/individual-providers/mock-googlepay-handler.js +16 -16
  275. package/dist/test/mocks/payment-providers/individual-providers/mock-googlepay-handler.js.map +1 -1
  276. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource-delegate.d.ts +28 -28
  277. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource-delegate.js +52 -52
  278. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource-delegate.js.map +1 -1
  279. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource.d.ts +11 -11
  280. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource.js +37 -37
  281. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource.js.map +1 -1
  282. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-handler.d.ts +12 -12
  283. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-handler.js +15 -15
  284. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-handler.js.map +1 -1
  285. package/dist/test/mocks/payment-providers/individual-providers/mock-venmo-handler.d.ts +7 -7
  286. package/dist/test/mocks/payment-providers/individual-providers/mock-venmo-handler.js +22 -22
  287. package/dist/test/mocks/payment-providers/individual-providers/mock-venmo-handler.js.map +1 -1
  288. package/dist/test/mocks/payment-providers/mock-payment-providers.d.ts +21 -21
  289. package/dist/test/mocks/payment-providers/mock-payment-providers.js +45 -45
  290. package/dist/test/mocks/payment-providers/mock-payment-providers.js.map +1 -1
  291. package/dist/test/tests/braintree-manager.test.d.ts +1 -1
  292. package/dist/test/tests/braintree-manager.test.js +166 -166
  293. package/dist/test/tests/braintree-manager.test.js.map +1 -1
  294. package/dist/test/tests/donation-form-controller.test.d.ts +1 -1
  295. package/dist/test/tests/donation-form-controller.test.js +188 -188
  296. package/dist/test/tests/donation-form-controller.test.js.map +1 -1
  297. package/dist/test/tests/donation-form.test.d.ts +1 -1
  298. package/dist/test/tests/donation-form.test.js +109 -109
  299. package/dist/test/tests/donation-form.test.js.map +1 -1
  300. package/dist/test/tests/flow-handlers/donation-flow-modal-manager.test.d.ts +1 -1
  301. package/dist/test/tests/flow-handlers/donation-flow-modal-manager.test.js +216 -216
  302. package/dist/test/tests/flow-handlers/donation-flow-modal-manager.test.js.map +1 -1
  303. package/dist/test/tests/form-elements/donation-summary.test.d.ts +1 -1
  304. package/dist/test/tests/form-elements/donation-summary.test.js +36 -36
  305. package/dist/test/tests/form-elements/donation-summary.test.js.map +1 -1
  306. package/dist/test/tests/form-elements/payment-selector.test.d.ts +1 -1
  307. package/dist/test/tests/form-elements/payment-selector.test.js +69 -69
  308. package/dist/test/tests/form-elements/payment-selector.test.js.map +1 -1
  309. package/dist/test/tests/modals/error-modal-content.test.d.ts +1 -1
  310. package/dist/test/tests/modals/error-modal-content.test.js +14 -14
  311. package/dist/test/tests/modals/error-modal-content.test.js.map +1 -1
  312. package/dist/test/tests/modals/upsell-modal-content.test.d.ts +1 -1
  313. package/dist/test/tests/modals/upsell-modal-content.test.js +163 -163
  314. package/dist/test/tests/modals/upsell-modal-content.test.js.map +1 -1
  315. package/dist/test/tests/models/donation-payment-info.test.d.ts +1 -1
  316. package/dist/test/tests/models/donation-payment-info.test.js +74 -74
  317. package/dist/test/tests/models/donation-payment-info.test.js.map +1 -1
  318. package/dist/test/tests/payment-clients.test.d.ts +1 -1
  319. package/dist/test/tests/payment-clients.test.js +130 -130
  320. package/dist/test/tests/payment-clients.test.js.map +1 -1
  321. package/dist/test/tests/payment-providers/applepay-sessiondatasource.test.d.ts +1 -1
  322. package/dist/test/tests/payment-providers/applepay-sessiondatasource.test.js +160 -160
  323. package/dist/test/tests/payment-providers/applepay-sessiondatasource.test.js.map +1 -1
  324. package/dist/test/tests/payment-providers/applepay-sessionmanager.test.d.ts +1 -1
  325. package/dist/test/tests/payment-providers/applepay-sessionmanager.test.js +36 -36
  326. package/dist/test/tests/payment-providers/applepay-sessionmanager.test.js.map +1 -1
  327. package/dist/test/tests/payment-providers/applepay.test.d.ts +1 -1
  328. package/dist/test/tests/payment-providers/applepay.test.js +78 -78
  329. package/dist/test/tests/payment-providers/applepay.test.js.map +1 -1
  330. package/dist/test/tests/payment-providers/creditcard.test.d.ts +1 -1
  331. package/dist/test/tests/payment-providers/creditcard.test.js +190 -190
  332. package/dist/test/tests/payment-providers/creditcard.test.js.map +1 -1
  333. package/dist/test/tests/payment-providers/googlepay.test.d.ts +1 -1
  334. package/dist/test/tests/payment-providers/googlepay.test.js +48 -48
  335. package/dist/test/tests/payment-providers/googlepay.test.js.map +1 -1
  336. package/dist/test/tests/payment-providers/payment-providers.test.d.ts +1 -1
  337. package/dist/test/tests/payment-providers/payment-providers.test.js +38 -38
  338. package/dist/test/tests/payment-providers/payment-providers.test.js.map +1 -1
  339. package/dist/test/tests/payment-providers/paypal-button-datasource.test.d.ts +1 -1
  340. package/dist/test/tests/payment-providers/paypal-button-datasource.test.js +162 -162
  341. package/dist/test/tests/payment-providers/paypal-button-datasource.test.js.map +1 -1
  342. package/dist/test/tests/payment-providers/paypal.test.d.ts +1 -1
  343. package/dist/test/tests/payment-providers/paypal.test.js +38 -38
  344. package/dist/test/tests/payment-providers/paypal.test.js.map +1 -1
  345. package/dist/test/tests/payment-providers/venmo.test.d.ts +1 -1
  346. package/dist/test/tests/payment-providers/venmo.test.js +77 -77
  347. package/dist/test/tests/payment-providers/venmo.test.js.map +1 -1
  348. package/dist/test/tests/recaptcha-manager.test.d.ts +1 -1
  349. package/dist/test/tests/recaptcha-manager.test.js +70 -70
  350. package/dist/test/tests/recaptcha-manager.test.js.map +1 -1
  351. package/package.json +101 -101
  352. package/src/@types/analytics-handler/index.d.ts +8 -8
  353. package/src/@types/braintree-web/LICENSE +21 -21
  354. package/src/@types/braintree-web/index.d.ts +93 -93
  355. package/src/@types/braintree-web/modules/american-express.d.ts +50 -50
  356. package/src/@types/braintree-web/modules/apple-pay.d.ts +213 -213
  357. package/src/@types/braintree-web/modules/client.d.ts +103 -103
  358. package/src/@types/braintree-web/modules/core.d.ts +34 -34
  359. package/src/@types/braintree-web/modules/data-collector.d.ts +13 -13
  360. package/src/@types/braintree-web/modules/google-payment.d.ts +269 -269
  361. package/src/@types/braintree-web/modules/hosted-fields.d.ts +366 -366
  362. package/src/@types/braintree-web/modules/paypal-checkout.d.ts +262 -262
  363. package/src/@types/braintree-web/modules/paypal.d.ts +177 -177
  364. package/src/@types/braintree-web/modules/three-d-secure.d.ts +141 -141
  365. package/src/@types/braintree-web/modules/unionpay.d.ts +224 -224
  366. package/src/@types/braintree-web/modules/us-bank-account.d.ts +81 -81
  367. package/src/@types/braintree-web/modules/venmo.d.ts +110 -110
  368. package/src/@types/braintree-web/package.json +64 -64
  369. package/src/@types/paypal-checkout-components/LICENSE +21 -21
  370. package/src/@types/paypal-checkout-components/index.d.ts +67 -67
  371. package/src/@types/paypal-checkout-components/modules/button.d.ts +50 -50
  372. package/src/@types/paypal-checkout-components/modules/callback-data.d.ts +244 -244
  373. package/src/@types/paypal-checkout-components/modules/configuration.d.ts +114 -114
  374. package/src/@types/paypal-checkout-components/package.json +58 -58
  375. package/src/braintree-manager/braintree-interfaces.ts +172 -172
  376. package/src/braintree-manager/braintree-manager.ts +283 -283
  377. package/src/braintree-manager/payment-clients.ts +148 -148
  378. package/src/braintree-manager/payment-providers/apple-pay/apple-pay-interface.ts +13 -13
  379. package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-delegate.ts +8 -8
  380. package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-interface.ts +10 -10
  381. package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource.ts +119 -119
  382. package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-manager.ts +21 -21
  383. package/src/braintree-manager/payment-providers/apple-pay/apple-pay.ts +98 -98
  384. package/src/braintree-manager/payment-providers/credit-card/credit-card-interface.ts +21 -21
  385. package/src/braintree-manager/payment-providers/credit-card/credit-card.ts +130 -130
  386. package/src/braintree-manager/payment-providers/credit-card/hosted-field-configuration.ts +19 -19
  387. package/src/braintree-manager/payment-providers/credit-card/hosted-field-container.ts +85 -85
  388. package/src/braintree-manager/payment-providers/google-pay-interface.ts +8 -8
  389. package/src/braintree-manager/payment-providers/google-pay.ts +59 -59
  390. package/src/braintree-manager/payment-providers/paypal/paypal-button-datasource.ts +218 -218
  391. package/src/braintree-manager/payment-providers/paypal/paypal-interface.ts +13 -13
  392. package/src/braintree-manager/payment-providers/paypal/paypal.ts +78 -78
  393. package/src/braintree-manager/payment-providers/venmo-interface.ts +8 -8
  394. package/src/braintree-manager/payment-providers/venmo.ts +67 -67
  395. package/src/braintree-manager/payment-providers-interface.ts +25 -25
  396. package/src/braintree-manager/payment-providers.ts +147 -147
  397. package/src/donation-form-controller.ts +619 -619
  398. package/src/donation-form-error.ts +6 -6
  399. package/src/donation-form.ts +566 -566
  400. package/src/form-elements/badged-input.ts +113 -113
  401. package/src/form-elements/contact-form/autocomplete-field-options.ts +63 -63
  402. package/src/form-elements/contact-form/contact-form.ts +427 -427
  403. package/src/form-elements/contact-form/countries.ts +252 -252
  404. package/src/form-elements/header/donation-form-header.ts +100 -100
  405. package/src/form-elements/header/donation-summary.ts +61 -61
  406. package/src/form-elements/payment-selector.ts +293 -293
  407. package/src/form-elements/total-amount.ts +46 -46
  408. package/src/modals/confirm-donation-modal-content.ts +160 -160
  409. package/src/modals/error-modal-content.ts +48 -48
  410. package/src/modals/upsell-modal-content.ts +294 -294
  411. package/src/payment-flow-handlers/donation-flow-modal-manager.ts +450 -450
  412. package/src/payment-flow-handlers/handlers/applepay-flow-handler.ts +108 -108
  413. package/src/payment-flow-handlers/handlers/creditcard-flow-handler.ts +231 -231
  414. package/src/payment-flow-handlers/handlers/googlepay-flow-handler.ts +113 -113
  415. package/src/payment-flow-handlers/handlers/paypal-flow-handler.ts +332 -332
  416. package/src/payment-flow-handlers/handlers/venmo-flow-handler.ts +118 -118
  417. package/src/payment-flow-handlers/handlers/venmo-restoration-state-handler.ts +127 -127
  418. package/src/payment-flow-handlers/payment-flow-handlers.ts +218 -218
  419. package/src/recaptcha-manager/recaptcha-manager.ts +123 -123
  420. package/src/util/promisedSleep.ts +3 -3
@@ -1,148 +1,148 @@
1
- import { LazyLoaderServiceInterface } from '@internetarchive/lazy-loader-service';
2
- import { PromisedSingleton } from '@internetarchive/promised-singleton';
3
- import { HostingEnvironment } from './braintree-interfaces';
4
-
5
- export interface PaymentClientsInterface {
6
- braintreeClient: PromisedSingleton<braintree.Client>;
7
- dataCollector: PromisedSingleton<braintree.DataCollector>;
8
- hostedFields: PromisedSingleton<braintree.HostedFields>;
9
- venmo: PromisedSingleton<braintree.Venmo>;
10
- payPal: PromisedSingleton<braintree.PayPalCheckout>;
11
- applePay: PromisedSingleton<braintree.ApplePay>;
12
- googlePayBraintreeClient: PromisedSingleton<braintree.GooglePayment>;
13
-
14
- googlePaymentsClient: PromisedSingleton<google.payments.api.PaymentsClient>;
15
- recaptchaLibrary: PromisedSingleton<ReCaptchaV2.ReCaptcha>;
16
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
- paypalLibrary: PromisedSingleton<any>;
18
- }
19
-
20
- /**
21
- * The PaymentClients class is responsible for loading and passing around
22
- * all of the payment libraries. Internally it uses the LazyLoaderService to lazy load
23
- * the javascript clients.
24
- *
25
- * For instance, it carries around the braintree and paypal libraries, as well as the specific
26
- * payment-provider clients for each of the providers. This allows us to pass around typed
27
- * objects instead of the untyped libraries we get from the providers.
28
- *
29
- * @export
30
- * @class PaymentClients
31
- * @implements {PaymentClientsInterface}
32
- */
33
- export class PaymentClients implements PaymentClientsInterface {
34
- braintreeClient = new PromisedSingleton<braintree.Client>({
35
- generator: async (): Promise<braintree.Client> => {
36
- await this.loadBraintreeScript('client');
37
- return window.braintree.client;
38
- },
39
- });
40
-
41
- dataCollector = new PromisedSingleton<braintree.DataCollector>({
42
- generator: async (): Promise<braintree.DataCollector> => {
43
- await this.loadBraintreeScript('data-collector');
44
- return window.braintree.dataCollector;
45
- },
46
- });
47
-
48
- hostedFields = new PromisedSingleton<braintree.HostedFields>({
49
- generator: async (): Promise<braintree.HostedFields> => {
50
- await this.loadBraintreeScript('hosted-fields');
51
- return window.braintree.hostedFields;
52
- },
53
- });
54
-
55
- venmo = new PromisedSingleton<braintree.Venmo>({
56
- generator: async (): Promise<braintree.Venmo> => {
57
- await this.loadBraintreeScript('venmo');
58
- return window.braintree.venmo;
59
- },
60
- });
61
-
62
- payPal = new PromisedSingleton<braintree.PayPalCheckout>({
63
- generator: async (): Promise<braintree.PayPalCheckout> => {
64
- await this.loadBraintreeScript('paypal-checkout');
65
- return window.braintree.paypalCheckout;
66
- },
67
- });
68
-
69
- applePay = new PromisedSingleton<braintree.ApplePay>({
70
- generator: async (): Promise<braintree.ApplePay> => {
71
- await this.loadBraintreeScript('apple-pay');
72
- return window.braintree.applePay;
73
- },
74
- });
75
-
76
- googlePayBraintreeClient = new PromisedSingleton<braintree.GooglePayment>({
77
- generator: async (): Promise<braintree.GooglePayment> => {
78
- await this.loadBraintreeScript('google-payment');
79
- return window.braintree.googlePayment;
80
- },
81
- });
82
-
83
- googlePaymentsClient = new PromisedSingleton<google.payments.api.PaymentsClient>({
84
- generator: async (): Promise<google.payments.api.PaymentsClient> => {
85
- await this.lazyLoader.loadScript({ src: 'https://pay.google.com/gp/p/js/pay.js' });
86
- return new google.payments.api.PaymentsClient({
87
- environment: this.environment === HostingEnvironment.Development ? 'TEST' : 'PRODUCTION',
88
- });
89
- },
90
- });
91
-
92
- recaptchaLibrary = new PromisedSingleton<ReCaptchaV2.ReCaptcha>({
93
- generator: (): Promise<ReCaptchaV2.ReCaptcha> =>
94
- new Promise(resolve => {
95
- // The loader for the recaptcha library is relying on an onload callback from the recaptcha
96
- // library because even when the library has loaded, it is still not ready
97
- // As recommended by Recaptcha, we attach a callback to the window object before starting
98
- // the load and remove it once the load is complete and resolve the promise.
99
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
100
- (window as any).donationFormGrecaptchaLoadedCallback = (): void => {
101
- setTimeout(() => {
102
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
103
- delete (window as any).donationFormGrecaptchaLoadedCallback;
104
- }, 10);
105
- resolve(window.grecaptcha);
106
- };
107
-
108
- this.lazyLoader.loadScript({
109
- src:
110
- 'https://www.google.com/recaptcha/api.js?onload=donationFormGrecaptchaLoadedCallback&render=explicit',
111
- });
112
- }),
113
- });
114
-
115
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
116
- paypalLibrary = new PromisedSingleton<any>({
117
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
118
- generator: async (): Promise<any> => {
119
- await this.lazyLoader.loadScript({
120
- src: 'https://www.paypalobjects.com/api/checkout.js',
121
- attributes: {
122
- 'data-version-4': '',
123
- 'log-level': 'warn',
124
- },
125
- });
126
- return window.paypal;
127
- },
128
- });
129
-
130
- constructor(lazyLoader: LazyLoaderServiceInterface, environment: HostingEnvironment) {
131
- this.lazyLoader = lazyLoader;
132
- this.environment = environment;
133
- }
134
-
135
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
136
- private async loadBraintreeScript(scriptName: string): Promise<void> {
137
- const extension = this.environment === HostingEnvironment.Production ? 'min.js' : 'js';
138
- const scriptWithSuffix = `${scriptName}.${extension}`;
139
- const url = `https://js.braintreegateway.com/web/${this.braintreeVersion}/js/${scriptWithSuffix}`;
140
- await this.lazyLoader.loadScript({ src: url });
141
- }
142
-
143
- private braintreeVersion = '3.62.2';
144
-
145
- private environment: HostingEnvironment = HostingEnvironment.Development;
146
-
147
- private lazyLoader: LazyLoaderServiceInterface;
148
- }
1
+ import { LazyLoaderServiceInterface } from '@internetarchive/lazy-loader-service';
2
+ import { PromisedSingleton } from '@internetarchive/promised-singleton';
3
+ import { HostingEnvironment } from './braintree-interfaces';
4
+
5
+ export interface PaymentClientsInterface {
6
+ braintreeClient: PromisedSingleton<braintree.Client>;
7
+ dataCollector: PromisedSingleton<braintree.DataCollector>;
8
+ hostedFields: PromisedSingleton<braintree.HostedFields>;
9
+ venmo: PromisedSingleton<braintree.Venmo>;
10
+ payPal: PromisedSingleton<braintree.PayPalCheckout>;
11
+ applePay: PromisedSingleton<braintree.ApplePay>;
12
+ googlePayBraintreeClient: PromisedSingleton<braintree.GooglePayment>;
13
+
14
+ googlePaymentsClient: PromisedSingleton<google.payments.api.PaymentsClient>;
15
+ recaptchaLibrary: PromisedSingleton<ReCaptchaV2.ReCaptcha>;
16
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
+ paypalLibrary: PromisedSingleton<any>;
18
+ }
19
+
20
+ /**
21
+ * The PaymentClients class is responsible for loading and passing around
22
+ * all of the payment libraries. Internally it uses the LazyLoaderService to lazy load
23
+ * the javascript clients.
24
+ *
25
+ * For instance, it carries around the braintree and paypal libraries, as well as the specific
26
+ * payment-provider clients for each of the providers. This allows us to pass around typed
27
+ * objects instead of the untyped libraries we get from the providers.
28
+ *
29
+ * @export
30
+ * @class PaymentClients
31
+ * @implements {PaymentClientsInterface}
32
+ */
33
+ export class PaymentClients implements PaymentClientsInterface {
34
+ braintreeClient = new PromisedSingleton<braintree.Client>({
35
+ generator: async (): Promise<braintree.Client> => {
36
+ await this.loadBraintreeScript('client');
37
+ return window.braintree.client;
38
+ },
39
+ });
40
+
41
+ dataCollector = new PromisedSingleton<braintree.DataCollector>({
42
+ generator: async (): Promise<braintree.DataCollector> => {
43
+ await this.loadBraintreeScript('data-collector');
44
+ return window.braintree.dataCollector;
45
+ },
46
+ });
47
+
48
+ hostedFields = new PromisedSingleton<braintree.HostedFields>({
49
+ generator: async (): Promise<braintree.HostedFields> => {
50
+ await this.loadBraintreeScript('hosted-fields');
51
+ return window.braintree.hostedFields;
52
+ },
53
+ });
54
+
55
+ venmo = new PromisedSingleton<braintree.Venmo>({
56
+ generator: async (): Promise<braintree.Venmo> => {
57
+ await this.loadBraintreeScript('venmo');
58
+ return window.braintree.venmo;
59
+ },
60
+ });
61
+
62
+ payPal = new PromisedSingleton<braintree.PayPalCheckout>({
63
+ generator: async (): Promise<braintree.PayPalCheckout> => {
64
+ await this.loadBraintreeScript('paypal-checkout');
65
+ return window.braintree.paypalCheckout;
66
+ },
67
+ });
68
+
69
+ applePay = new PromisedSingleton<braintree.ApplePay>({
70
+ generator: async (): Promise<braintree.ApplePay> => {
71
+ await this.loadBraintreeScript('apple-pay');
72
+ return window.braintree.applePay;
73
+ },
74
+ });
75
+
76
+ googlePayBraintreeClient = new PromisedSingleton<braintree.GooglePayment>({
77
+ generator: async (): Promise<braintree.GooglePayment> => {
78
+ await this.loadBraintreeScript('google-payment');
79
+ return window.braintree.googlePayment;
80
+ },
81
+ });
82
+
83
+ googlePaymentsClient = new PromisedSingleton<google.payments.api.PaymentsClient>({
84
+ generator: async (): Promise<google.payments.api.PaymentsClient> => {
85
+ await this.lazyLoader.loadScript({ src: 'https://pay.google.com/gp/p/js/pay.js' });
86
+ return new google.payments.api.PaymentsClient({
87
+ environment: this.environment === HostingEnvironment.Development ? 'TEST' : 'PRODUCTION',
88
+ });
89
+ },
90
+ });
91
+
92
+ recaptchaLibrary = new PromisedSingleton<ReCaptchaV2.ReCaptcha>({
93
+ generator: (): Promise<ReCaptchaV2.ReCaptcha> =>
94
+ new Promise(resolve => {
95
+ // The loader for the recaptcha library is relying on an onload callback from the recaptcha
96
+ // library because even when the library has loaded, it is still not ready
97
+ // As recommended by Recaptcha, we attach a callback to the window object before starting
98
+ // the load and remove it once the load is complete and resolve the promise.
99
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
100
+ (window as any).donationFormGrecaptchaLoadedCallback = (): void => {
101
+ setTimeout(() => {
102
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
103
+ delete (window as any).donationFormGrecaptchaLoadedCallback;
104
+ }, 10);
105
+ resolve(window.grecaptcha);
106
+ };
107
+
108
+ this.lazyLoader.loadScript({
109
+ src:
110
+ 'https://www.google.com/recaptcha/api.js?onload=donationFormGrecaptchaLoadedCallback&render=explicit',
111
+ });
112
+ }),
113
+ });
114
+
115
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
116
+ paypalLibrary = new PromisedSingleton<any>({
117
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
118
+ generator: async (): Promise<any> => {
119
+ await this.lazyLoader.loadScript({
120
+ src: 'https://www.paypalobjects.com/api/checkout.js',
121
+ attributes: {
122
+ 'data-version-4': '',
123
+ 'log-level': 'warn',
124
+ },
125
+ });
126
+ return window.paypal;
127
+ },
128
+ });
129
+
130
+ constructor(lazyLoader: LazyLoaderServiceInterface, environment: HostingEnvironment) {
131
+ this.lazyLoader = lazyLoader;
132
+ this.environment = environment;
133
+ }
134
+
135
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
136
+ private async loadBraintreeScript(scriptName: string): Promise<void> {
137
+ const extension = this.environment === HostingEnvironment.Production ? 'min.js' : 'js';
138
+ const scriptWithSuffix = `${scriptName}.${extension}`;
139
+ const url = `https://js.braintreegateway.com/web/${this.braintreeVersion}/js/${scriptWithSuffix}`;
140
+ await this.lazyLoader.loadScript({ src: url });
141
+ }
142
+
143
+ private braintreeVersion = '3.62.2';
144
+
145
+ private environment: HostingEnvironment = HostingEnvironment.Development;
146
+
147
+ private lazyLoader: LazyLoaderServiceInterface;
148
+ }
@@ -1,13 +1,13 @@
1
- import { PromisedSingleton } from '@internetarchive/promised-singleton';
2
- import { DonationPaymentInfo } from '@internetarchive/donation-form-data-models';
3
- import { ApplePaySessionDataSourceInterface } from './apple-pay-session-datasource-interface';
4
-
5
- export interface ApplePayHandlerInterface {
6
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
- instance: PromisedSingleton<any | undefined>;
8
- isAvailable(): Promise<boolean>;
9
- createPaymentRequest(
10
- e: Event,
11
- donationInfo: DonationPaymentInfo,
12
- ): Promise<ApplePaySessionDataSourceInterface>;
13
- }
1
+ import { PromisedSingleton } from '@internetarchive/promised-singleton';
2
+ import { DonationPaymentInfo } from '@internetarchive/donation-form-data-models';
3
+ import { ApplePaySessionDataSourceInterface } from './apple-pay-session-datasource-interface';
4
+
5
+ export interface ApplePayHandlerInterface {
6
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
+ instance: PromisedSingleton<any | undefined>;
8
+ isAvailable(): Promise<boolean>;
9
+ createPaymentRequest(
10
+ e: Event,
11
+ donationInfo: DonationPaymentInfo,
12
+ ): Promise<ApplePaySessionDataSourceInterface>;
13
+ }
@@ -1,8 +1,8 @@
1
- import { DonationResponse } from '@internetarchive/donation-form-data-models';
2
-
3
- export interface ApplePaySessionDataSourceDelegate {
4
- paymentComplete(response: DonationResponse): void;
5
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
- paymentFailed(error: any): void;
7
- paymentCancelled(): void;
8
- }
1
+ import { DonationResponse } from '@internetarchive/donation-form-data-models';
2
+
3
+ export interface ApplePaySessionDataSourceDelegate {
4
+ paymentComplete(response: DonationResponse): void;
5
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
+ paymentFailed(error: any): void;
7
+ paymentCancelled(): void;
8
+ }
@@ -1,10 +1,10 @@
1
- import { DonationPaymentInfo } from '@internetarchive/donation-form-data-models';
2
- import { ApplePaySessionDataSourceDelegate } from './apple-pay-session-datasource-delegate';
3
-
4
- export interface ApplePaySessionDataSourceInterface {
5
- delegate?: ApplePaySessionDataSourceDelegate;
6
- donationInfo: DonationPaymentInfo;
7
- onvalidatemerchant(event: ApplePayJS.ApplePayValidateMerchantEvent): Promise<void>;
8
- onpaymentauthorized(event: ApplePayJS.ApplePayPaymentAuthorizedEvent): Promise<void>;
9
- oncancel(): Promise<void>;
10
- }
1
+ import { DonationPaymentInfo } from '@internetarchive/donation-form-data-models';
2
+ import { ApplePaySessionDataSourceDelegate } from './apple-pay-session-datasource-delegate';
3
+
4
+ export interface ApplePaySessionDataSourceInterface {
5
+ delegate?: ApplePaySessionDataSourceDelegate;
6
+ donationInfo: DonationPaymentInfo;
7
+ onvalidatemerchant(event: ApplePayJS.ApplePayValidateMerchantEvent): Promise<void>;
8
+ onpaymentauthorized(event: ApplePayJS.ApplePayPaymentAuthorizedEvent): Promise<void>;
9
+ oncancel(): Promise<void>;
10
+ }
@@ -1,119 +1,119 @@
1
- import {
2
- DonationPaymentInfo,
3
- BillingInfo,
4
- CustomerInfo,
5
- PaymentProvider,
6
- } from '@internetarchive/donation-form-data-models';
7
- import { BraintreeManagerInterface } from '../../braintree-interfaces';
8
- import { ApplePaySessionDataSourceInterface } from './apple-pay-session-datasource-interface';
9
- import { ApplePaySessionDataSourceDelegate } from './apple-pay-session-datasource-delegate';
10
-
11
- export class ApplePaySessionDataSource implements ApplePaySessionDataSourceInterface {
12
- delegate?: ApplePaySessionDataSourceDelegate;
13
- donationInfo: DonationPaymentInfo;
14
-
15
- private session: ApplePaySession;
16
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
- private applePayInstance: any;
18
- private braintreeManager: BraintreeManagerInterface;
19
-
20
- constructor(options: {
21
- donationInfo: DonationPaymentInfo;
22
- session: ApplePaySession;
23
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
- applePayInstance: any;
25
- braintreeManager: BraintreeManagerInterface;
26
- }) {
27
- this.session = options.session;
28
- this.donationInfo = options.donationInfo;
29
- this.applePayInstance = options.applePayInstance;
30
- this.braintreeManager = options.braintreeManager;
31
- }
32
-
33
- async onvalidatemerchant(event: ApplePayJS.ApplePayValidateMerchantEvent): Promise<void> {
34
- return new Promise((resolve, reject) => {
35
- this.applePayInstance.performValidation(
36
- {
37
- validationURL: event.validationURL,
38
- displayName: 'Internet Archive',
39
- },
40
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
41
- (validationErr: any, validationData: any) => {
42
- if (validationErr) {
43
- this.delegate?.paymentFailed(validationErr);
44
- this.session.abort();
45
- reject(`Merchant validation error: ${validationErr}`);
46
- } else {
47
- this.session.completeMerchantValidation(validationData);
48
- resolve();
49
- }
50
- },
51
- );
52
- });
53
- }
54
-
55
- async oncancel(): Promise<void> {
56
- this.delegate?.paymentCancelled();
57
- }
58
-
59
- async onpaymentauthorized(event: ApplePayJS.ApplePayPaymentAuthorizedEvent): Promise<void> {
60
- let payload;
61
- try {
62
- payload = await this.applePayInstance.tokenize({
63
- token: event.payment.token,
64
- });
65
- } catch (err) {
66
- this.delegate?.paymentFailed(err);
67
- this.session.completePayment(ApplePaySession.STATUS_FAILURE);
68
- return;
69
- }
70
-
71
- const payment = event.payment;
72
- const billingContact = payment.billingContact;
73
- const shippingContact = payment.shippingContact;
74
- const addressLines = billingContact?.addressLines;
75
-
76
- let line1: string | undefined = undefined;
77
- let line2: string | undefined = undefined;
78
-
79
- if (addressLines) {
80
- line1 = addressLines[0];
81
- line2 = addressLines[1];
82
- }
83
-
84
- const billingInfo = new BillingInfo({
85
- streetAddress: line1,
86
- extendedAddress: line2,
87
- locality: billingContact?.locality,
88
- region: billingContact?.administrativeArea,
89
- postalCode: billingContact?.postalCode,
90
- countryCodeAlpha2: billingContact?.countryCode,
91
- });
92
-
93
- const customerInfo = new CustomerInfo({
94
- email: shippingContact?.emailAddress,
95
- firstName: shippingContact?.givenName,
96
- lastName: shippingContact?.familyName,
97
- });
98
-
99
- try {
100
- const donationResponse = await this.braintreeManager.submitDonation({
101
- nonce: payload.nonce,
102
- paymentProvider: PaymentProvider.ApplePay,
103
- donationInfo: this.donationInfo,
104
- billingInfo: billingInfo,
105
- customerInfo: customerInfo,
106
- });
107
- if (donationResponse.success) {
108
- this.delegate?.paymentComplete(donationResponse);
109
- this.session.completePayment(ApplePaySession.STATUS_SUCCESS);
110
- } else {
111
- this.delegate?.paymentFailed('Failure submitting data');
112
- this.session.completePayment(ApplePaySession.STATUS_FAILURE);
113
- }
114
- } catch (err) {
115
- this.delegate?.paymentFailed(err);
116
- this.session.completePayment(ApplePaySession.STATUS_FAILURE);
117
- }
118
- }
119
- }
1
+ import {
2
+ DonationPaymentInfo,
3
+ BillingInfo,
4
+ CustomerInfo,
5
+ PaymentProvider,
6
+ } from '@internetarchive/donation-form-data-models';
7
+ import { BraintreeManagerInterface } from '../../braintree-interfaces';
8
+ import { ApplePaySessionDataSourceInterface } from './apple-pay-session-datasource-interface';
9
+ import { ApplePaySessionDataSourceDelegate } from './apple-pay-session-datasource-delegate';
10
+
11
+ export class ApplePaySessionDataSource implements ApplePaySessionDataSourceInterface {
12
+ delegate?: ApplePaySessionDataSourceDelegate;
13
+ donationInfo: DonationPaymentInfo;
14
+
15
+ private session: ApplePaySession;
16
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
+ private applePayInstance: any;
18
+ private braintreeManager: BraintreeManagerInterface;
19
+
20
+ constructor(options: {
21
+ donationInfo: DonationPaymentInfo;
22
+ session: ApplePaySession;
23
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
+ applePayInstance: any;
25
+ braintreeManager: BraintreeManagerInterface;
26
+ }) {
27
+ this.session = options.session;
28
+ this.donationInfo = options.donationInfo;
29
+ this.applePayInstance = options.applePayInstance;
30
+ this.braintreeManager = options.braintreeManager;
31
+ }
32
+
33
+ async onvalidatemerchant(event: ApplePayJS.ApplePayValidateMerchantEvent): Promise<void> {
34
+ return new Promise((resolve, reject) => {
35
+ this.applePayInstance.performValidation(
36
+ {
37
+ validationURL: event.validationURL,
38
+ displayName: 'Internet Archive',
39
+ },
40
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
41
+ (validationErr: any, validationData: any) => {
42
+ if (validationErr) {
43
+ this.delegate?.paymentFailed(validationErr);
44
+ this.session.abort();
45
+ reject(`Merchant validation error: ${validationErr}`);
46
+ } else {
47
+ this.session.completeMerchantValidation(validationData);
48
+ resolve();
49
+ }
50
+ },
51
+ );
52
+ });
53
+ }
54
+
55
+ async oncancel(): Promise<void> {
56
+ this.delegate?.paymentCancelled();
57
+ }
58
+
59
+ async onpaymentauthorized(event: ApplePayJS.ApplePayPaymentAuthorizedEvent): Promise<void> {
60
+ let payload;
61
+ try {
62
+ payload = await this.applePayInstance.tokenize({
63
+ token: event.payment.token,
64
+ });
65
+ } catch (err) {
66
+ this.delegate?.paymentFailed(err);
67
+ this.session.completePayment(ApplePaySession.STATUS_FAILURE);
68
+ return;
69
+ }
70
+
71
+ const payment = event.payment;
72
+ const billingContact = payment.billingContact;
73
+ const shippingContact = payment.shippingContact;
74
+ const addressLines = billingContact?.addressLines;
75
+
76
+ let line1: string | undefined = undefined;
77
+ let line2: string | undefined = undefined;
78
+
79
+ if (addressLines) {
80
+ line1 = addressLines[0];
81
+ line2 = addressLines[1];
82
+ }
83
+
84
+ const billingInfo = new BillingInfo({
85
+ streetAddress: line1,
86
+ extendedAddress: line2,
87
+ locality: billingContact?.locality,
88
+ region: billingContact?.administrativeArea,
89
+ postalCode: billingContact?.postalCode,
90
+ countryCodeAlpha2: billingContact?.countryCode,
91
+ });
92
+
93
+ const customerInfo = new CustomerInfo({
94
+ email: shippingContact?.emailAddress,
95
+ firstName: shippingContact?.givenName,
96
+ lastName: shippingContact?.familyName,
97
+ });
98
+
99
+ try {
100
+ const donationResponse = await this.braintreeManager.submitDonation({
101
+ nonce: payload.nonce,
102
+ paymentProvider: PaymentProvider.ApplePay,
103
+ donationInfo: this.donationInfo,
104
+ billingInfo: billingInfo,
105
+ customerInfo: customerInfo,
106
+ });
107
+ if (donationResponse.success) {
108
+ this.delegate?.paymentComplete(donationResponse);
109
+ this.session.completePayment(ApplePaySession.STATUS_SUCCESS);
110
+ } else {
111
+ this.delegate?.paymentFailed('Failure submitting data');
112
+ this.session.completePayment(ApplePaySession.STATUS_FAILURE);
113
+ }
114
+ } catch (err) {
115
+ this.delegate?.paymentFailed(err);
116
+ this.session.completePayment(ApplePaySession.STATUS_FAILURE);
117
+ }
118
+ }
119
+ }
@@ -1,21 +1,21 @@
1
- export interface ApplePaySessionManagerInterface {
2
- canMakePayments(): boolean;
3
- createNewPaymentSession(paymentRequest: ApplePayJS.ApplePayPaymentRequest): ApplePaySession;
4
- }
5
-
6
- export class ApplePaySessionManager implements ApplePaySessionManagerInterface {
7
- static VERSION = 3;
8
-
9
- canMakePayments(): boolean {
10
- return (
11
- 'ApplePaySession' in window &&
12
- ApplePaySession.supportsVersion(ApplePaySessionManager.VERSION) &&
13
- ApplePaySession.canMakePayments()
14
- );
15
- }
16
-
17
- createNewPaymentSession(paymentRequest: ApplePayJS.ApplePayPaymentRequest): ApplePaySession {
18
- const session = new ApplePaySession(ApplePaySessionManager.VERSION, paymentRequest);
19
- return session;
20
- }
21
- }
1
+ export interface ApplePaySessionManagerInterface {
2
+ canMakePayments(): boolean;
3
+ createNewPaymentSession(paymentRequest: ApplePayJS.ApplePayPaymentRequest): ApplePaySession;
4
+ }
5
+
6
+ export class ApplePaySessionManager implements ApplePaySessionManagerInterface {
7
+ static VERSION = 3;
8
+
9
+ canMakePayments(): boolean {
10
+ return (
11
+ 'ApplePaySession' in window &&
12
+ ApplePaySession.supportsVersion(ApplePaySessionManager.VERSION) &&
13
+ ApplePaySession.canMakePayments()
14
+ );
15
+ }
16
+
17
+ createNewPaymentSession(paymentRequest: ApplePayJS.ApplePayPaymentRequest): ApplePaySession {
18
+ const session = new ApplePaySession(ApplePaySessionManager.VERSION, paymentRequest);
19
+ return session;
20
+ }
21
+ }