@internetarchive/donation-form 0.5.17 → 0.5.18-alpha.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 (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-braintree-manager.d.ts +45 -45
  166. package/dist/test/mocks/mock-braintree-manager.js +71 -71
  167. package/dist/test/mocks/mock-braintree-manager.js.map +1 -1
  168. package/dist/test/mocks/mock-donation-info.d.ts +4 -4
  169. package/dist/test/mocks/mock-donation-info.js +10 -10
  170. package/dist/test/mocks/mock-donation-info.js.map +1 -1
  171. package/dist/test/mocks/mock-endpoint-manager.d.ts +12 -12
  172. package/dist/test/mocks/mock-endpoint-manager.js +19 -19
  173. package/dist/test/mocks/mock-endpoint-manager.js.map +1 -1
  174. package/dist/test/mocks/mock-hosted-fields-config.d.ts +4 -4
  175. package/dist/test/mocks/mock-hosted-fields-config.js +37 -37
  176. package/dist/test/mocks/mock-hosted-fields-config.js.map +1 -1
  177. package/dist/test/mocks/mock-hosted-fields-container.d.ts +13 -13
  178. package/dist/test/mocks/mock-hosted-fields-container.js +27 -27
  179. package/dist/test/mocks/mock-hosted-fields-container.js.map +1 -1
  180. package/dist/test/mocks/mock-lazy-loader.d.ts +15 -15
  181. package/dist/test/mocks/mock-lazy-loader.js +20 -20
  182. package/dist/test/mocks/mock-lazy-loader.js.map +1 -1
  183. package/dist/test/mocks/mock-modal-manager.d.ts +17 -17
  184. package/dist/test/mocks/mock-modal-manager.js +26 -26
  185. package/dist/test/mocks/mock-modal-manager.js.map +1 -1
  186. package/dist/test/mocks/mock-payment-clients.d.ts +29 -29
  187. package/dist/test/mocks/mock-payment-clients.js +78 -78
  188. package/dist/test/mocks/mock-payment-clients.js.map +1 -1
  189. package/dist/test/mocks/mock-paypal-button-renderer.d.ts +5 -5
  190. package/dist/test/mocks/mock-paypal-button-renderer.js +6 -6
  191. package/dist/test/mocks/mock-paypal-button-renderer.js.map +1 -1
  192. package/dist/test/mocks/mock-recaptcha-manager.d.ts +7 -7
  193. package/dist/test/mocks/mock-recaptcha-manager.js +14 -14
  194. package/dist/test/mocks/mock-recaptcha-manager.js.map +1 -1
  195. package/dist/test/mocks/models/mock-billing-info.d.ts +2 -2
  196. package/dist/test/mocks/models/mock-billing-info.js +9 -9
  197. package/dist/test/mocks/models/mock-billing-info.js.map +1 -1
  198. package/dist/test/mocks/models/mock-custom-fields.d.ts +2 -2
  199. package/dist/test/mocks/models/mock-custom-fields.js +7 -7
  200. package/dist/test/mocks/models/mock-custom-fields.js.map +1 -1
  201. package/dist/test/mocks/models/mock-customer-info.d.ts +2 -2
  202. package/dist/test/mocks/models/mock-customer-info.js +6 -6
  203. package/dist/test/mocks/models/mock-customer-info.js.map +1 -1
  204. package/dist/test/mocks/models/mock-donation-request.d.ts +2 -2
  205. package/dist/test/mocks/models/mock-donation-request.js +18 -18
  206. package/dist/test/mocks/models/mock-donation-request.js.map +1 -1
  207. package/dist/test/mocks/models/mock-success-response.d.ts +2 -2
  208. package/dist/test/mocks/models/mock-success-response.js +14 -14
  209. package/dist/test/mocks/models/mock-success-response.js.map +1 -1
  210. package/dist/test/mocks/payment-clients/mock-applepay-client.d.ts +21 -21
  211. package/dist/test/mocks/payment-clients/mock-applepay-client.js +72 -72
  212. package/dist/test/mocks/payment-clients/mock-applepay-client.js.map +1 -1
  213. package/dist/test/mocks/payment-clients/mock-applepay-payment.d.ts +6 -6
  214. package/dist/test/mocks/payment-clients/mock-applepay-payment.js +42 -42
  215. package/dist/test/mocks/payment-clients/mock-applepay-payment.js.map +1 -1
  216. package/dist/test/mocks/payment-clients/mock-applepay-paymentauthorizedevent.d.ts +22 -22
  217. package/dist/test/mocks/payment-clients/mock-applepay-paymentauthorizedevent.js +35 -35
  218. package/dist/test/mocks/payment-clients/mock-applepay-paymentauthorizedevent.js.map +1 -1
  219. package/dist/test/mocks/payment-clients/mock-applepay-session.d.ts +30 -30
  220. package/dist/test/mocks/payment-clients/mock-applepay-session.js +52 -52
  221. package/dist/test/mocks/payment-clients/mock-applepay-session.js.map +1 -1
  222. package/dist/test/mocks/payment-clients/mock-applepay-sessionmanager.d.ts +10 -10
  223. package/dist/test/mocks/payment-clients/mock-applepay-sessionmanager.js +12 -12
  224. package/dist/test/mocks/payment-clients/mock-applepay-sessionmanager.js.map +1 -1
  225. package/dist/test/mocks/payment-clients/mock-applepay-validatemerchantevent.d.ts +22 -22
  226. package/dist/test/mocks/payment-clients/mock-applepay-validatemerchantevent.js +34 -34
  227. package/dist/test/mocks/payment-clients/mock-applepay-validatemerchantevent.js.map +1 -1
  228. package/dist/test/mocks/payment-clients/mock-braintree-client.d.ts +14 -14
  229. package/dist/test/mocks/payment-clients/mock-braintree-client.js +19 -19
  230. package/dist/test/mocks/payment-clients/mock-braintree-client.js.map +1 -1
  231. package/dist/test/mocks/payment-clients/mock-data-collector.d.ts +11 -11
  232. package/dist/test/mocks/payment-clients/mock-data-collector.js +17 -17
  233. package/dist/test/mocks/payment-clients/mock-data-collector.js.map +1 -1
  234. package/dist/test/mocks/payment-clients/mock-googlepay-client.d.ts +22 -22
  235. package/dist/test/mocks/payment-clients/mock-googlepay-client.js +42 -42
  236. package/dist/test/mocks/payment-clients/mock-googlepay-client.js.map +1 -1
  237. package/dist/test/mocks/payment-clients/mock-googlepay-library.d.ts +10 -10
  238. package/dist/test/mocks/payment-clients/mock-googlepay-library.js +22 -22
  239. package/dist/test/mocks/payment-clients/mock-googlepay-library.js.map +1 -1
  240. package/dist/test/mocks/payment-clients/mock-grecaptcha.d.ts +23 -23
  241. package/dist/test/mocks/payment-clients/mock-grecaptcha.js +62 -62
  242. package/dist/test/mocks/payment-clients/mock-grecaptcha.js.map +1 -1
  243. package/dist/test/mocks/payment-clients/mock-hostedfields-client.d.ts +33 -33
  244. package/dist/test/mocks/payment-clients/mock-hostedfields-client.js +54 -54
  245. package/dist/test/mocks/payment-clients/mock-hostedfields-client.js.map +1 -1
  246. package/dist/test/mocks/payment-clients/mock-hostedfieldstateobject-generator.d.ts +1 -1
  247. package/dist/test/mocks/payment-clients/mock-hostedfieldstateobject-generator.js +50 -50
  248. package/dist/test/mocks/payment-clients/mock-hostedfieldstateobject-generator.js.map +1 -1
  249. package/dist/test/mocks/payment-clients/mock-hostedfieldtokenizepayload.d.ts +1 -1
  250. package/dist/test/mocks/payment-clients/mock-hostedfieldtokenizepayload.js +13 -13
  251. package/dist/test/mocks/payment-clients/mock-hostedfieldtokenizepayload.js.map +1 -1
  252. package/dist/test/mocks/payment-clients/mock-paypal-client.d.ts +23 -23
  253. package/dist/test/mocks/payment-clients/mock-paypal-client.js +62 -62
  254. package/dist/test/mocks/payment-clients/mock-paypal-client.js.map +1 -1
  255. package/dist/test/mocks/payment-clients/mock-paypal-library.d.ts +4 -4
  256. package/dist/test/mocks/payment-clients/mock-paypal-library.js +9 -9
  257. package/dist/test/mocks/payment-clients/mock-paypal-library.js.map +1 -1
  258. package/dist/test/mocks/payment-clients/mock-venmo-client.d.ts +22 -22
  259. package/dist/test/mocks/payment-clients/mock-venmo-client.js +36 -36
  260. package/dist/test/mocks/payment-clients/mock-venmo-client.js.map +1 -1
  261. package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-datasource-delegate.d.ts +10 -10
  262. package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-datasource-delegate.js +14 -14
  263. package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-datasource-delegate.js.map +1 -1
  264. package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-handler.d.ts +9 -9
  265. package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-handler.js +19 -19
  266. package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-handler.js.map +1 -1
  267. package/dist/test/mocks/payment-providers/individual-providers/mock-creditcard-handler.d.ts +18 -18
  268. package/dist/test/mocks/payment-providers/individual-providers/mock-creditcard-handler.js +41 -41
  269. package/dist/test/mocks/payment-providers/individual-providers/mock-creditcard-handler.js.map +1 -1
  270. package/dist/test/mocks/payment-providers/individual-providers/mock-googlepay-handler.d.ts +8 -8
  271. package/dist/test/mocks/payment-providers/individual-providers/mock-googlepay-handler.js +16 -16
  272. package/dist/test/mocks/payment-providers/individual-providers/mock-googlepay-handler.js.map +1 -1
  273. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource-delegate.d.ts +28 -28
  274. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource-delegate.js +52 -52
  275. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource-delegate.js.map +1 -1
  276. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource.d.ts +11 -11
  277. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource.js +37 -37
  278. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource.js.map +1 -1
  279. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-handler.d.ts +12 -12
  280. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-handler.js +15 -15
  281. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-handler.js.map +1 -1
  282. package/dist/test/mocks/payment-providers/individual-providers/mock-venmo-handler.d.ts +7 -7
  283. package/dist/test/mocks/payment-providers/individual-providers/mock-venmo-handler.js +22 -22
  284. package/dist/test/mocks/payment-providers/individual-providers/mock-venmo-handler.js.map +1 -1
  285. package/dist/test/mocks/payment-providers/mock-payment-providers.d.ts +21 -21
  286. package/dist/test/mocks/payment-providers/mock-payment-providers.js +45 -45
  287. package/dist/test/mocks/payment-providers/mock-payment-providers.js.map +1 -1
  288. package/dist/test/tests/braintree-manager.test.d.ts +1 -1
  289. package/dist/test/tests/braintree-manager.test.js +166 -166
  290. package/dist/test/tests/braintree-manager.test.js.map +1 -1
  291. package/dist/test/tests/donation-form-controller.test.d.ts +1 -1
  292. package/dist/test/tests/donation-form-controller.test.js +188 -188
  293. package/dist/test/tests/donation-form-controller.test.js.map +1 -1
  294. package/dist/test/tests/donation-form.test.d.ts +1 -1
  295. package/dist/test/tests/donation-form.test.js +109 -109
  296. package/dist/test/tests/donation-form.test.js.map +1 -1
  297. package/dist/test/tests/flow-handlers/donation-flow-modal-manager.test.d.ts +1 -1
  298. package/dist/test/tests/flow-handlers/donation-flow-modal-manager.test.js +216 -216
  299. package/dist/test/tests/flow-handlers/donation-flow-modal-manager.test.js.map +1 -1
  300. package/dist/test/tests/form-elements/donation-summary.test.d.ts +1 -1
  301. package/dist/test/tests/form-elements/donation-summary.test.js +36 -36
  302. package/dist/test/tests/form-elements/donation-summary.test.js.map +1 -1
  303. package/dist/test/tests/form-elements/payment-selector.test.d.ts +1 -1
  304. package/dist/test/tests/form-elements/payment-selector.test.js +69 -69
  305. package/dist/test/tests/form-elements/payment-selector.test.js.map +1 -1
  306. package/dist/test/tests/modals/error-modal-content.test.d.ts +1 -1
  307. package/dist/test/tests/modals/error-modal-content.test.js +14 -14
  308. package/dist/test/tests/modals/error-modal-content.test.js.map +1 -1
  309. package/dist/test/tests/modals/upsell-modal-content.test.d.ts +1 -1
  310. package/dist/test/tests/modals/upsell-modal-content.test.js +163 -163
  311. package/dist/test/tests/modals/upsell-modal-content.test.js.map +1 -1
  312. package/dist/test/tests/models/donation-payment-info.test.d.ts +1 -1
  313. package/dist/test/tests/models/donation-payment-info.test.js +74 -74
  314. package/dist/test/tests/models/donation-payment-info.test.js.map +1 -1
  315. package/dist/test/tests/payment-clients.test.d.ts +1 -1
  316. package/dist/test/tests/payment-clients.test.js +130 -130
  317. package/dist/test/tests/payment-clients.test.js.map +1 -1
  318. package/dist/test/tests/payment-providers/applepay-sessiondatasource.test.d.ts +1 -1
  319. package/dist/test/tests/payment-providers/applepay-sessiondatasource.test.js +160 -160
  320. package/dist/test/tests/payment-providers/applepay-sessiondatasource.test.js.map +1 -1
  321. package/dist/test/tests/payment-providers/applepay-sessionmanager.test.d.ts +1 -1
  322. package/dist/test/tests/payment-providers/applepay-sessionmanager.test.js +36 -36
  323. package/dist/test/tests/payment-providers/applepay-sessionmanager.test.js.map +1 -1
  324. package/dist/test/tests/payment-providers/applepay.test.d.ts +1 -1
  325. package/dist/test/tests/payment-providers/applepay.test.js +78 -78
  326. package/dist/test/tests/payment-providers/applepay.test.js.map +1 -1
  327. package/dist/test/tests/payment-providers/creditcard.test.d.ts +1 -1
  328. package/dist/test/tests/payment-providers/creditcard.test.js +190 -190
  329. package/dist/test/tests/payment-providers/creditcard.test.js.map +1 -1
  330. package/dist/test/tests/payment-providers/googlepay.test.d.ts +1 -1
  331. package/dist/test/tests/payment-providers/googlepay.test.js +48 -48
  332. package/dist/test/tests/payment-providers/googlepay.test.js.map +1 -1
  333. package/dist/test/tests/payment-providers/payment-providers.test.d.ts +1 -1
  334. package/dist/test/tests/payment-providers/payment-providers.test.js +38 -38
  335. package/dist/test/tests/payment-providers/payment-providers.test.js.map +1 -1
  336. package/dist/test/tests/payment-providers/paypal-button-datasource.test.d.ts +1 -1
  337. package/dist/test/tests/payment-providers/paypal-button-datasource.test.js +162 -162
  338. package/dist/test/tests/payment-providers/paypal-button-datasource.test.js.map +1 -1
  339. package/dist/test/tests/payment-providers/paypal.test.d.ts +1 -1
  340. package/dist/test/tests/payment-providers/paypal.test.js +38 -38
  341. package/dist/test/tests/payment-providers/paypal.test.js.map +1 -1
  342. package/dist/test/tests/payment-providers/venmo.test.d.ts +1 -1
  343. package/dist/test/tests/payment-providers/venmo.test.js +77 -77
  344. package/dist/test/tests/payment-providers/venmo.test.js.map +1 -1
  345. package/dist/test/tests/recaptcha-manager.test.d.ts +1 -1
  346. package/dist/test/tests/recaptcha-manager.test.js +70 -70
  347. package/dist/test/tests/recaptcha-manager.test.js.map +1 -1
  348. package/package.json +101 -101
  349. package/src/@types/analytics-handler/index.d.ts +8 -8
  350. package/src/@types/braintree-web/LICENSE +21 -21
  351. package/src/@types/braintree-web/index.d.ts +93 -93
  352. package/src/@types/braintree-web/modules/american-express.d.ts +50 -50
  353. package/src/@types/braintree-web/modules/apple-pay.d.ts +213 -213
  354. package/src/@types/braintree-web/modules/client.d.ts +103 -103
  355. package/src/@types/braintree-web/modules/core.d.ts +34 -34
  356. package/src/@types/braintree-web/modules/data-collector.d.ts +13 -13
  357. package/src/@types/braintree-web/modules/google-payment.d.ts +269 -269
  358. package/src/@types/braintree-web/modules/hosted-fields.d.ts +366 -366
  359. package/src/@types/braintree-web/modules/paypal-checkout.d.ts +262 -262
  360. package/src/@types/braintree-web/modules/paypal.d.ts +177 -177
  361. package/src/@types/braintree-web/modules/three-d-secure.d.ts +141 -141
  362. package/src/@types/braintree-web/modules/unionpay.d.ts +224 -224
  363. package/src/@types/braintree-web/modules/us-bank-account.d.ts +81 -81
  364. package/src/@types/braintree-web/modules/venmo.d.ts +110 -110
  365. package/src/@types/braintree-web/package.json +64 -64
  366. package/src/@types/paypal-checkout-components/LICENSE +21 -21
  367. package/src/@types/paypal-checkout-components/index.d.ts +67 -67
  368. package/src/@types/paypal-checkout-components/modules/button.d.ts +50 -50
  369. package/src/@types/paypal-checkout-components/modules/callback-data.d.ts +244 -244
  370. package/src/@types/paypal-checkout-components/modules/configuration.d.ts +114 -114
  371. package/src/@types/paypal-checkout-components/package.json +58 -58
  372. package/src/braintree-manager/braintree-interfaces.ts +172 -172
  373. package/src/braintree-manager/braintree-manager.ts +283 -283
  374. package/src/braintree-manager/payment-clients.ts +148 -148
  375. package/src/braintree-manager/payment-providers/apple-pay/apple-pay-interface.ts +13 -13
  376. package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-delegate.ts +8 -8
  377. package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-interface.ts +10 -10
  378. package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource.ts +119 -119
  379. package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-manager.ts +21 -21
  380. package/src/braintree-manager/payment-providers/apple-pay/apple-pay.ts +98 -98
  381. package/src/braintree-manager/payment-providers/credit-card/credit-card-interface.ts +21 -21
  382. package/src/braintree-manager/payment-providers/credit-card/credit-card.ts +130 -130
  383. package/src/braintree-manager/payment-providers/credit-card/hosted-field-configuration.ts +19 -19
  384. package/src/braintree-manager/payment-providers/credit-card/hosted-field-container.ts +85 -85
  385. package/src/braintree-manager/payment-providers/google-pay-interface.ts +8 -8
  386. package/src/braintree-manager/payment-providers/google-pay.ts +59 -59
  387. package/src/braintree-manager/payment-providers/paypal/paypal-button-datasource.ts +218 -218
  388. package/src/braintree-manager/payment-providers/paypal/paypal-interface.ts +13 -13
  389. package/src/braintree-manager/payment-providers/paypal/paypal.ts +78 -78
  390. package/src/braintree-manager/payment-providers/venmo-interface.ts +8 -8
  391. package/src/braintree-manager/payment-providers/venmo.ts +67 -67
  392. package/src/braintree-manager/payment-providers-interface.ts +25 -25
  393. package/src/braintree-manager/payment-providers.ts +147 -147
  394. package/src/donation-form-controller.ts +619 -619
  395. package/src/donation-form-error.ts +6 -6
  396. package/src/donation-form.ts +566 -566
  397. package/src/form-elements/badged-input.ts +113 -113
  398. package/src/form-elements/contact-form/autocomplete-field-options.ts +63 -63
  399. package/src/form-elements/contact-form/contact-form.ts +427 -427
  400. package/src/form-elements/contact-form/countries.ts +252 -252
  401. package/src/form-elements/header/donation-form-header.ts +100 -100
  402. package/src/form-elements/header/donation-summary.ts +61 -61
  403. package/src/form-elements/payment-selector.ts +293 -293
  404. package/src/form-elements/total-amount.ts +46 -46
  405. package/src/modals/confirm-donation-modal-content.ts +160 -160
  406. package/src/modals/error-modal-content.ts +48 -48
  407. package/src/modals/upsell-modal-content.ts +294 -294
  408. package/src/payment-flow-handlers/donation-flow-modal-manager.ts +450 -450
  409. package/src/payment-flow-handlers/handlers/applepay-flow-handler.ts +108 -108
  410. package/src/payment-flow-handlers/handlers/creditcard-flow-handler.ts +231 -231
  411. package/src/payment-flow-handlers/handlers/googlepay-flow-handler.ts +113 -113
  412. package/src/payment-flow-handlers/handlers/paypal-flow-handler.ts +332 -332
  413. package/src/payment-flow-handlers/handlers/venmo-flow-handler.ts +118 -118
  414. package/src/payment-flow-handlers/handlers/venmo-restoration-state-handler.ts +127 -127
  415. package/src/payment-flow-handlers/payment-flow-handlers.ts +218 -218
  416. package/src/recaptcha-manager/recaptcha-manager.ts +123 -123
  417. package/src/util/promisedSleep.ts +3 -3
  418. package/dist/test/mocks/mock-analytics-handler.d.ts +0 -8
  419. package/dist/test/mocks/mock-analytics-handler.js +0 -10
  420. package/dist/test/mocks/mock-analytics-handler.js.map +0 -1
@@ -1,67 +1,67 @@
1
- import { PromisedSingleton } from '@internetarchive/promised-singleton';
2
-
3
- import { BraintreeManagerInterface } from '../braintree-interfaces';
4
- import { VenmoHandlerInterface } from './venmo-interface';
5
-
6
- export class VenmoHandler implements VenmoHandlerInterface {
7
- instance: PromisedSingleton<braintree.Venmo>;
8
-
9
- constructor(options: {
10
- braintreeManager: BraintreeManagerInterface;
11
- venmoClient: braintree.Venmo;
12
- venmoProfileId: string;
13
- instancePromisedSingleton?: PromisedSingleton<braintree.Venmo>;
14
- }) {
15
- this.braintreeManager = options.braintreeManager;
16
- this.venmoClient = options.venmoClient;
17
- this.venmoProfileId = options.venmoProfileId;
18
-
19
- this.instance =
20
- options.instancePromisedSingleton ??
21
- new PromisedSingleton<braintree.Venmo>({
22
- generator: (): Promise<braintree.Venmo> =>
23
- this.braintreeManager.instance.get().then(braintreeInstance => {
24
- return this.venmoClient.create({
25
- client: braintreeInstance,
26
- profileId: this.venmoProfileId,
27
- });
28
- }),
29
- });
30
- }
31
-
32
- private braintreeManager: BraintreeManagerInterface;
33
-
34
- private venmoClient: braintree.Venmo;
35
-
36
- private venmoProfileId: string;
37
-
38
- async isBrowserSupported(): Promise<boolean> {
39
- if (this.isMobileFirefox()) {
40
- return false;
41
- }
42
- const instance = await this.instance.get();
43
- return instance?.isBrowserSupported() ?? false;
44
- }
45
-
46
- async startPayment(): Promise<braintree.VenmoTokenizePayload> {
47
- const instance = await this.instance.get();
48
- return instance?.tokenize();
49
- }
50
-
51
- /**
52
- * Venmo does not work in mobile Firefox, but their browser detector returns supported for it.
53
- *
54
- * On iOS, it opens the Venmo app, but returns you to Safari.
55
- * On Android, it takes you to the "Download Venmo" page.
56
- *
57
- * @private
58
- * @returns {boolean}
59
- * @memberof VenmoHandler
60
- */
61
- private isMobileFirefox(): boolean {
62
- const isFirefoxIos = navigator.userAgent.indexOf('FxiOS') !== -1;
63
- const isFirefox = navigator.userAgent.indexOf('Firefox') !== -1;
64
- const isMobile = navigator.userAgent.indexOf('Mobile') !== -1;
65
- return (isFirefox || isFirefoxIos) && isMobile;
66
- }
67
- }
1
+ import { PromisedSingleton } from '@internetarchive/promised-singleton';
2
+
3
+ import { BraintreeManagerInterface } from '../braintree-interfaces';
4
+ import { VenmoHandlerInterface } from './venmo-interface';
5
+
6
+ export class VenmoHandler implements VenmoHandlerInterface {
7
+ instance: PromisedSingleton<braintree.Venmo>;
8
+
9
+ constructor(options: {
10
+ braintreeManager: BraintreeManagerInterface;
11
+ venmoClient: braintree.Venmo;
12
+ venmoProfileId: string;
13
+ instancePromisedSingleton?: PromisedSingleton<braintree.Venmo>;
14
+ }) {
15
+ this.braintreeManager = options.braintreeManager;
16
+ this.venmoClient = options.venmoClient;
17
+ this.venmoProfileId = options.venmoProfileId;
18
+
19
+ this.instance =
20
+ options.instancePromisedSingleton ??
21
+ new PromisedSingleton<braintree.Venmo>({
22
+ generator: (): Promise<braintree.Venmo> =>
23
+ this.braintreeManager.instance.get().then(braintreeInstance => {
24
+ return this.venmoClient.create({
25
+ client: braintreeInstance,
26
+ profileId: this.venmoProfileId,
27
+ });
28
+ }),
29
+ });
30
+ }
31
+
32
+ private braintreeManager: BraintreeManagerInterface;
33
+
34
+ private venmoClient: braintree.Venmo;
35
+
36
+ private venmoProfileId: string;
37
+
38
+ async isBrowserSupported(): Promise<boolean> {
39
+ if (this.isMobileFirefox()) {
40
+ return false;
41
+ }
42
+ const instance = await this.instance.get();
43
+ return instance?.isBrowserSupported() ?? false;
44
+ }
45
+
46
+ async startPayment(): Promise<braintree.VenmoTokenizePayload> {
47
+ const instance = await this.instance.get();
48
+ return instance?.tokenize();
49
+ }
50
+
51
+ /**
52
+ * Venmo does not work in mobile Firefox, but their browser detector returns supported for it.
53
+ *
54
+ * On iOS, it opens the Venmo app, but returns you to Safari.
55
+ * On Android, it takes you to the "Download Venmo" page.
56
+ *
57
+ * @private
58
+ * @returns {boolean}
59
+ * @memberof VenmoHandler
60
+ */
61
+ private isMobileFirefox(): boolean {
62
+ const isFirefoxIos = navigator.userAgent.indexOf('FxiOS') !== -1;
63
+ const isFirefox = navigator.userAgent.indexOf('Firefox') !== -1;
64
+ const isMobile = navigator.userAgent.indexOf('Mobile') !== -1;
65
+ return (isFirefox || isFirefoxIos) && isMobile;
66
+ }
67
+ }
@@ -1,25 +1,25 @@
1
- import { PromisedSingleton } from '@internetarchive/promised-singleton';
2
- import { ApplePayHandlerInterface } from './payment-providers/apple-pay/apple-pay-interface';
3
- import {
4
- CreditCardHandlerEvents,
5
- CreditCardHandlerInterface,
6
- } from './payment-providers/credit-card/credit-card-interface';
7
- import { VenmoHandlerInterface } from './payment-providers/venmo-interface';
8
- import { PayPalHandlerInterface } from './payment-providers/paypal/paypal-interface';
9
- import { GooglePayHandlerInterface } from './payment-providers/google-pay-interface';
10
- import { Unsubscribe } from 'nanoevents';
11
-
12
- // this will bubble up child events
13
- export type PaymentProvidersEvents = CreditCardHandlerEvents;
14
-
15
- export interface PaymentProvidersInterface {
16
- on<E extends keyof PaymentProvidersEvents>(
17
- event: E,
18
- callback: PaymentProvidersEvents[E],
19
- ): Unsubscribe;
20
- creditCardHandler: PromisedSingleton<CreditCardHandlerInterface>;
21
- applePayHandler: PromisedSingleton<ApplePayHandlerInterface>;
22
- venmoHandler: PromisedSingleton<VenmoHandlerInterface | undefined>;
23
- paypalHandler: PromisedSingleton<PayPalHandlerInterface>;
24
- googlePayHandler: PromisedSingleton<GooglePayHandlerInterface>;
25
- }
1
+ import { PromisedSingleton } from '@internetarchive/promised-singleton';
2
+ import { ApplePayHandlerInterface } from './payment-providers/apple-pay/apple-pay-interface';
3
+ import {
4
+ CreditCardHandlerEvents,
5
+ CreditCardHandlerInterface,
6
+ } from './payment-providers/credit-card/credit-card-interface';
7
+ import { VenmoHandlerInterface } from './payment-providers/venmo-interface';
8
+ import { PayPalHandlerInterface } from './payment-providers/paypal/paypal-interface';
9
+ import { GooglePayHandlerInterface } from './payment-providers/google-pay-interface';
10
+ import { Unsubscribe } from 'nanoevents';
11
+
12
+ // this will bubble up child events
13
+ export type PaymentProvidersEvents = CreditCardHandlerEvents;
14
+
15
+ export interface PaymentProvidersInterface {
16
+ on<E extends keyof PaymentProvidersEvents>(
17
+ event: E,
18
+ callback: PaymentProvidersEvents[E],
19
+ ): Unsubscribe;
20
+ creditCardHandler: PromisedSingleton<CreditCardHandlerInterface>;
21
+ applePayHandler: PromisedSingleton<ApplePayHandlerInterface>;
22
+ venmoHandler: PromisedSingleton<VenmoHandlerInterface | undefined>;
23
+ paypalHandler: PromisedSingleton<PayPalHandlerInterface>;
24
+ googlePayHandler: PromisedSingleton<GooglePayHandlerInterface>;
25
+ }
@@ -1,147 +1,147 @@
1
- import { PromisedSingleton } from '@internetarchive/promised-singleton';
2
-
3
- import { CreditCardHandler } from './payment-providers/credit-card/credit-card';
4
- import { ApplePayHandler } from './payment-providers/apple-pay/apple-pay';
5
- import { VenmoHandler } from './payment-providers/venmo';
6
- import { PayPalHandler } from './payment-providers/paypal/paypal';
7
- import { ApplePaySessionManager } from './payment-providers/apple-pay/apple-pay-session-manager';
8
- import { PaymentClientsInterface } from './payment-clients';
9
- import { GooglePayHandler } from './payment-providers/google-pay';
10
- import { BraintreeManagerInterface, HostingEnvironment } from './braintree-interfaces';
11
- import { HostedFieldConfiguration } from './payment-providers/credit-card/hosted-field-configuration';
12
- import { PaymentProvidersEvents, PaymentProvidersInterface } from './payment-providers-interface';
13
- import { ApplePayHandlerInterface } from './payment-providers/apple-pay/apple-pay-interface';
14
- import { CreditCardHandlerInterface } from './payment-providers/credit-card/credit-card-interface';
15
- import { VenmoHandlerInterface } from './payment-providers/venmo-interface';
16
- import { PayPalHandlerInterface } from './payment-providers/paypal/paypal-interface';
17
- import { GooglePayHandlerInterface } from './payment-providers/google-pay-interface';
18
- import { createNanoEvents, Unsubscribe } from 'nanoevents';
19
-
20
- /**
21
- * The PaymentProviders class contains the IA-specific handlers for each of the
22
- * different payment providers.
23
- *
24
- * They are generally data-focused, as opposed to UI-focused, but there
25
- * is some cross-polination between PaymentProviders and FlowHandlers.
26
- *
27
- * @export
28
- * @class PaymentProviders
29
- * @implements {PaymentProvidersInterface}
30
- */
31
- export class PaymentProviders implements PaymentProvidersInterface {
32
- on<E extends keyof PaymentProvidersEvents>(
33
- event: E,
34
- callback: PaymentProvidersEvents[E],
35
- ): Unsubscribe {
36
- return this.emitter.on(event, callback);
37
- }
38
-
39
- creditCardHandler = new PromisedSingleton<CreditCardHandlerInterface>({
40
- generator: async (): Promise<CreditCardHandlerInterface> => {
41
- const client = await this.paymentClients.hostedFields.get();
42
- const handler = new CreditCardHandler({
43
- braintreeManager: this.braintreeManager,
44
- hostedFieldClient: client,
45
- hostedFieldConfig: this.hostedFieldConfig,
46
- });
47
-
48
- handler.on('hostedFieldsRetry', (retryNumber: number) => {
49
- this.emitter.emit('hostedFieldsRetry', retryNumber);
50
- });
51
-
52
- handler.on('hostedFieldsFailed', (error: unknown) => {
53
- this.emitter.emit('hostedFieldsFailed', error);
54
- });
55
-
56
- return handler;
57
- },
58
- });
59
-
60
- applePayHandler = new PromisedSingleton<ApplePayHandlerInterface>({
61
- generator: async (): Promise<ApplePayHandlerInterface> => {
62
- const client = await this.paymentClients.applePay.get();
63
- const applePaySessionManager = new ApplePaySessionManager();
64
- return new ApplePayHandler({
65
- braintreeManager: this.braintreeManager,
66
- applePayClient: client,
67
- applePaySessionManager: applePaySessionManager,
68
- });
69
- },
70
- });
71
-
72
- venmoHandler = new PromisedSingleton<VenmoHandlerInterface | undefined>({
73
- generator: async (): Promise<VenmoHandlerInterface | undefined> => {
74
- const client = await this.paymentClients.venmo.get();
75
- if (!this.venmoProfileId) {
76
- return undefined;
77
- }
78
- return new VenmoHandler({
79
- braintreeManager: this.braintreeManager,
80
- venmoClient: client,
81
- venmoProfileId: this.venmoProfileId,
82
- });
83
- },
84
- });
85
-
86
- paypalHandler = new PromisedSingleton<PayPalHandlerInterface>({
87
- generator: async (): Promise<PayPalHandlerInterface> => {
88
- const paypalLibrary = this.paymentClients.paypalLibrary.get();
89
- const client = this.paymentClients.payPal.get();
90
-
91
- const values = await Promise.all([client, paypalLibrary]);
92
- const handler = new PayPalHandler({
93
- braintreeManager: this.braintreeManager,
94
- paypalClient: values[0],
95
- paypalButton: values[1].Button,
96
- hostingEnvironment: this.hostingEnvironment,
97
- });
98
- return handler;
99
- },
100
- });
101
-
102
- googlePayHandler = new PromisedSingleton<GooglePayHandlerInterface>({
103
- generator: async (): Promise<GooglePayHandlerInterface> => {
104
- const googlePaymentsClient = this.paymentClients.googlePaymentsClient.get();
105
- const braintreeClient = this.paymentClients.googlePayBraintreeClient.get();
106
-
107
- const values = await Promise.all([braintreeClient, googlePaymentsClient]);
108
- const handler = new GooglePayHandler({
109
- braintreeManager: this.braintreeManager,
110
- googlePayMerchantId: this.googlePayMerchantId,
111
- googlePayBraintreeClient: values[0],
112
- googlePaymentsClient: values[1],
113
- });
114
- return handler;
115
- },
116
- });
117
-
118
- private braintreeManager: BraintreeManagerInterface;
119
-
120
- private venmoProfileId?: string;
121
-
122
- private googlePayMerchantId?: string;
123
-
124
- private hostedFieldConfig: HostedFieldConfiguration;
125
-
126
- private hostingEnvironment: HostingEnvironment = HostingEnvironment.Development;
127
-
128
- private paymentClients: PaymentClientsInterface;
129
-
130
- private emitter = createNanoEvents<PaymentProvidersEvents>();
131
-
132
- constructor(options: {
133
- braintreeManager: BraintreeManagerInterface;
134
- paymentClients: PaymentClientsInterface;
135
- venmoProfileId?: string;
136
- googlePayMerchantId?: string;
137
- hostingEnvironment: HostingEnvironment;
138
- hostedFieldConfig: HostedFieldConfiguration;
139
- }) {
140
- this.braintreeManager = options.braintreeManager;
141
- this.venmoProfileId = options.venmoProfileId;
142
- this.googlePayMerchantId = options.googlePayMerchantId;
143
- this.paymentClients = options.paymentClients;
144
- this.hostingEnvironment = options.hostingEnvironment;
145
- this.hostedFieldConfig = options.hostedFieldConfig;
146
- }
147
- }
1
+ import { PromisedSingleton } from '@internetarchive/promised-singleton';
2
+
3
+ import { CreditCardHandler } from './payment-providers/credit-card/credit-card';
4
+ import { ApplePayHandler } from './payment-providers/apple-pay/apple-pay';
5
+ import { VenmoHandler } from './payment-providers/venmo';
6
+ import { PayPalHandler } from './payment-providers/paypal/paypal';
7
+ import { ApplePaySessionManager } from './payment-providers/apple-pay/apple-pay-session-manager';
8
+ import { PaymentClientsInterface } from './payment-clients';
9
+ import { GooglePayHandler } from './payment-providers/google-pay';
10
+ import { BraintreeManagerInterface, HostingEnvironment } from './braintree-interfaces';
11
+ import { HostedFieldConfiguration } from './payment-providers/credit-card/hosted-field-configuration';
12
+ import { PaymentProvidersEvents, PaymentProvidersInterface } from './payment-providers-interface';
13
+ import { ApplePayHandlerInterface } from './payment-providers/apple-pay/apple-pay-interface';
14
+ import { CreditCardHandlerInterface } from './payment-providers/credit-card/credit-card-interface';
15
+ import { VenmoHandlerInterface } from './payment-providers/venmo-interface';
16
+ import { PayPalHandlerInterface } from './payment-providers/paypal/paypal-interface';
17
+ import { GooglePayHandlerInterface } from './payment-providers/google-pay-interface';
18
+ import { createNanoEvents, Unsubscribe } from 'nanoevents';
19
+
20
+ /**
21
+ * The PaymentProviders class contains the IA-specific handlers for each of the
22
+ * different payment providers.
23
+ *
24
+ * They are generally data-focused, as opposed to UI-focused, but there
25
+ * is some cross-polination between PaymentProviders and FlowHandlers.
26
+ *
27
+ * @export
28
+ * @class PaymentProviders
29
+ * @implements {PaymentProvidersInterface}
30
+ */
31
+ export class PaymentProviders implements PaymentProvidersInterface {
32
+ on<E extends keyof PaymentProvidersEvents>(
33
+ event: E,
34
+ callback: PaymentProvidersEvents[E],
35
+ ): Unsubscribe {
36
+ return this.emitter.on(event, callback);
37
+ }
38
+
39
+ creditCardHandler = new PromisedSingleton<CreditCardHandlerInterface>({
40
+ generator: async (): Promise<CreditCardHandlerInterface> => {
41
+ const client = await this.paymentClients.hostedFields.get();
42
+ const handler = new CreditCardHandler({
43
+ braintreeManager: this.braintreeManager,
44
+ hostedFieldClient: client,
45
+ hostedFieldConfig: this.hostedFieldConfig,
46
+ });
47
+
48
+ handler.on('hostedFieldsRetry', (retryNumber: number) => {
49
+ this.emitter.emit('hostedFieldsRetry', retryNumber);
50
+ });
51
+
52
+ handler.on('hostedFieldsFailed', (error: unknown) => {
53
+ this.emitter.emit('hostedFieldsFailed', error);
54
+ });
55
+
56
+ return handler;
57
+ },
58
+ });
59
+
60
+ applePayHandler = new PromisedSingleton<ApplePayHandlerInterface>({
61
+ generator: async (): Promise<ApplePayHandlerInterface> => {
62
+ const client = await this.paymentClients.applePay.get();
63
+ const applePaySessionManager = new ApplePaySessionManager();
64
+ return new ApplePayHandler({
65
+ braintreeManager: this.braintreeManager,
66
+ applePayClient: client,
67
+ applePaySessionManager: applePaySessionManager,
68
+ });
69
+ },
70
+ });
71
+
72
+ venmoHandler = new PromisedSingleton<VenmoHandlerInterface | undefined>({
73
+ generator: async (): Promise<VenmoHandlerInterface | undefined> => {
74
+ const client = await this.paymentClients.venmo.get();
75
+ if (!this.venmoProfileId) {
76
+ return undefined;
77
+ }
78
+ return new VenmoHandler({
79
+ braintreeManager: this.braintreeManager,
80
+ venmoClient: client,
81
+ venmoProfileId: this.venmoProfileId,
82
+ });
83
+ },
84
+ });
85
+
86
+ paypalHandler = new PromisedSingleton<PayPalHandlerInterface>({
87
+ generator: async (): Promise<PayPalHandlerInterface> => {
88
+ const paypalLibrary = this.paymentClients.paypalLibrary.get();
89
+ const client = this.paymentClients.payPal.get();
90
+
91
+ const values = await Promise.all([client, paypalLibrary]);
92
+ const handler = new PayPalHandler({
93
+ braintreeManager: this.braintreeManager,
94
+ paypalClient: values[0],
95
+ paypalButton: values[1].Button,
96
+ hostingEnvironment: this.hostingEnvironment,
97
+ });
98
+ return handler;
99
+ },
100
+ });
101
+
102
+ googlePayHandler = new PromisedSingleton<GooglePayHandlerInterface>({
103
+ generator: async (): Promise<GooglePayHandlerInterface> => {
104
+ const googlePaymentsClient = this.paymentClients.googlePaymentsClient.get();
105
+ const braintreeClient = this.paymentClients.googlePayBraintreeClient.get();
106
+
107
+ const values = await Promise.all([braintreeClient, googlePaymentsClient]);
108
+ const handler = new GooglePayHandler({
109
+ braintreeManager: this.braintreeManager,
110
+ googlePayMerchantId: this.googlePayMerchantId,
111
+ googlePayBraintreeClient: values[0],
112
+ googlePaymentsClient: values[1],
113
+ });
114
+ return handler;
115
+ },
116
+ });
117
+
118
+ private braintreeManager: BraintreeManagerInterface;
119
+
120
+ private venmoProfileId?: string;
121
+
122
+ private googlePayMerchantId?: string;
123
+
124
+ private hostedFieldConfig: HostedFieldConfiguration;
125
+
126
+ private hostingEnvironment: HostingEnvironment = HostingEnvironment.Development;
127
+
128
+ private paymentClients: PaymentClientsInterface;
129
+
130
+ private emitter = createNanoEvents<PaymentProvidersEvents>();
131
+
132
+ constructor(options: {
133
+ braintreeManager: BraintreeManagerInterface;
134
+ paymentClients: PaymentClientsInterface;
135
+ venmoProfileId?: string;
136
+ googlePayMerchantId?: string;
137
+ hostingEnvironment: HostingEnvironment;
138
+ hostedFieldConfig: HostedFieldConfiguration;
139
+ }) {
140
+ this.braintreeManager = options.braintreeManager;
141
+ this.venmoProfileId = options.venmoProfileId;
142
+ this.googlePayMerchantId = options.googlePayMerchantId;
143
+ this.paymentClients = options.paymentClients;
144
+ this.hostingEnvironment = options.hostingEnvironment;
145
+ this.hostedFieldConfig = options.hostedFieldConfig;
146
+ }
147
+ }