@internetarchive/donation-form 0.5.17-a3 → 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.
- package/LICENSE +661 -661
- package/README.md +115 -115
- package/dist/demo/braintree-endpoint-manager.d.ts +9 -9
- package/dist/demo/braintree-endpoint-manager.js +45 -45
- package/dist/demo/braintree-endpoint-manager.js.map +1 -1
- package/dist/demo/demo-analytics-handler.d.ts +17 -17
- package/dist/demo/demo-analytics-handler.js +13 -13
- package/dist/demo/demo-analytics-handler.js.map +1 -1
- package/dist/demo/submit-form-with.d.ts +7 -7
- package/dist/demo/submit-form-with.js +21 -21
- package/dist/demo/submit-form-with.js.map +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/index.js +7 -7
- package/dist/index.js.map +1 -1
- package/dist/src/braintree-manager/braintree-interfaces.d.ts +147 -147
- package/dist/src/braintree-manager/braintree-interfaces.js +5 -5
- package/dist/src/braintree-manager/braintree-interfaces.js.map +1 -1
- package/dist/src/braintree-manager/braintree-manager.d.ts +124 -124
- package/dist/src/braintree-manager/braintree-manager.js +149 -149
- package/dist/src/braintree-manager/braintree-manager.js.map +1 -1
- package/dist/src/braintree-manager/payment-clients.d.ts +47 -47
- package/dist/src/braintree-manager/payment-clients.js +116 -116
- package/dist/src/braintree-manager/payment-clients.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-interface.d.ts +8 -8
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-interface.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-delegate.d.ts +6 -6
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-delegate.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-interface.d.ts +10 -10
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-interface.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource.d.ts +21 -21
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource.js +99 -99
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-manager.d.ts +10 -10
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-manager.js +12 -12
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-manager.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay.d.ts +20 -20
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay.js +71 -71
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/credit-card/credit-card-interface.d.ts +16 -16
- package/dist/src/braintree-manager/payment-providers/credit-card/credit-card-interface.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/credit-card/credit-card.d.ts +29 -29
- package/dist/src/braintree-manager/payment-providers/credit-card/credit-card.js +99 -99
- package/dist/src/braintree-manager/payment-providers/credit-card/credit-card.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-configuration.d.ts +11 -11
- package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-configuration.js +7 -7
- package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-configuration.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-container.d.ts +34 -34
- package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-container.js +52 -52
- package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-container.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/google-pay-interface.d.ts +7 -7
- package/dist/src/braintree-manager/payment-providers/google-pay-interface.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/google-pay.d.ts +18 -18
- package/dist/src/braintree-manager/payment-providers/google-pay.js +40 -40
- package/dist/src/braintree-manager/payment-providers/google-pay.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/paypal/paypal-button-datasource.d.ts +145 -145
- package/dist/src/braintree-manager/payment-providers/paypal/paypal-button-datasource.js +60 -60
- package/dist/src/braintree-manager/payment-providers/paypal/paypal-button-datasource.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/paypal/paypal-interface.d.ts +11 -11
- package/dist/src/braintree-manager/payment-providers/paypal/paypal-interface.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/paypal/paypal.d.ts +23 -23
- package/dist/src/braintree-manager/payment-providers/paypal/paypal.js +46 -46
- package/dist/src/braintree-manager/payment-providers/paypal/paypal.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/venmo-interface.d.ts +6 -6
- package/dist/src/braintree-manager/payment-providers/venmo-interface.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/venmo.d.ts +28 -28
- package/dist/src/braintree-manager/payment-providers/venmo.js +50 -50
- package/dist/src/braintree-manager/payment-providers/venmo.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers-interface.d.ts +16 -16
- package/dist/src/braintree-manager/payment-providers-interface.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers.d.ts +45 -45
- package/dist/src/braintree-manager/payment-providers.js +105 -105
- package/dist/src/braintree-manager/payment-providers.js.map +1 -1
- package/dist/src/donation-form-controller.d.ts +116 -116
- package/dist/src/donation-form-controller.js +562 -562
- package/dist/src/donation-form-controller.js.map +1 -1
- package/dist/src/donation-form-error.d.ts +3 -3
- package/dist/src/donation-form-error.js +6 -6
- package/dist/src/donation-form-error.js.map +1 -1
- package/dist/src/donation-form.d.ts +120 -120
- package/dist/src/donation-form.js +530 -530
- package/dist/src/donation-form.js.map +1 -1
- package/dist/src/form-elements/badged-input.d.ts +32 -32
- package/dist/src/form-elements/badged-input.js +124 -124
- package/dist/src/form-elements/badged-input.js.map +1 -1
- package/dist/src/form-elements/contact-form/autocomplete-field-options.d.ts +1 -1
- package/dist/src/form-elements/contact-form/autocomplete-field-options.js.map +1 -1
- package/dist/src/form-elements/contact-form/contact-form.d.ts +53 -53
- package/dist/src/form-elements/contact-form/contact-form.js +428 -428
- package/dist/src/form-elements/contact-form/contact-form.js.map +1 -1
- package/dist/src/form-elements/contact-form/countries.d.ts +3 -3
- package/dist/src/form-elements/contact-form/countries.js +252 -252
- package/dist/src/form-elements/contact-form/countries.js.map +1 -1
- package/dist/src/form-elements/header/donation-form-header.d.ts +27 -27
- package/dist/src/form-elements/header/donation-form-header.js +97 -97
- package/dist/src/form-elements/header/donation-form-header.js.map +1 -1
- package/dist/src/form-elements/header/donation-summary.d.ts +11 -11
- package/dist/src/form-elements/header/donation-summary.js +57 -57
- package/dist/src/form-elements/header/donation-summary.js.map +1 -1
- package/dist/src/form-elements/payment-selector.d.ts +25 -25
- package/dist/src/form-elements/payment-selector.js +286 -286
- package/dist/src/form-elements/payment-selector.js.map +1 -1
- package/dist/src/form-elements/total-amount.d.ts +8 -8
- package/dist/src/form-elements/total-amount.js +47 -47
- package/dist/src/form-elements/total-amount.js.map +1 -1
- package/dist/src/modals/confirm-donation-modal-content.d.ts +31 -31
- package/dist/src/modals/confirm-donation-modal-content.js +168 -168
- package/dist/src/modals/confirm-donation-modal-content.js.map +1 -1
- package/dist/src/modals/error-modal-content.d.ts +14 -14
- package/dist/src/modals/error-modal-content.js +49 -49
- package/dist/src/modals/error-modal-content.js.map +1 -1
- package/dist/src/modals/upsell-modal-content.d.ts +32 -32
- package/dist/src/modals/upsell-modal-content.js +294 -294
- package/dist/src/modals/upsell-modal-content.js.map +1 -1
- package/dist/src/payment-flow-handlers/donation-flow-modal-manager.d.ts +181 -181
- package/dist/src/payment-flow-handlers/donation-flow-modal-manager.js +252 -252
- package/dist/src/payment-flow-handlers/donation-flow-modal-manager.js.map +1 -1
- package/dist/src/payment-flow-handlers/handlers/applepay-flow-handler.d.ts +21 -21
- package/dist/src/payment-flow-handlers/handlers/applepay-flow-handler.js +76 -76
- package/dist/src/payment-flow-handlers/handlers/applepay-flow-handler.js.map +1 -1
- package/dist/src/payment-flow-handlers/handlers/creditcard-flow-handler.d.ts +70 -70
- package/dist/src/payment-flow-handlers/handlers/creditcard-flow-handler.js +140 -140
- package/dist/src/payment-flow-handlers/handlers/creditcard-flow-handler.js.map +1 -1
- package/dist/src/payment-flow-handlers/handlers/googlepay-flow-handler.d.ts +22 -22
- package/dist/src/payment-flow-handlers/handlers/googlepay-flow-handler.js +74 -74
- package/dist/src/payment-flow-handlers/handlers/googlepay-flow-handler.js.map +1 -1
- package/dist/src/payment-flow-handlers/handlers/paypal-flow-handler.d.ts +52 -52
- package/dist/src/payment-flow-handlers/handlers/paypal-flow-handler.js +239 -239
- package/dist/src/payment-flow-handlers/handlers/paypal-flow-handler.js.map +1 -1
- package/dist/src/payment-flow-handlers/handlers/venmo-flow-handler.d.ts +30 -30
- package/dist/src/payment-flow-handlers/handlers/venmo-flow-handler.js +89 -89
- package/dist/src/payment-flow-handlers/handlers/venmo-flow-handler.js.map +1 -1
- package/dist/src/payment-flow-handlers/handlers/venmo-restoration-state-handler.d.ts +75 -75
- package/dist/src/payment-flow-handlers/handlers/venmo-restoration-state-handler.js +94 -94
- package/dist/src/payment-flow-handlers/handlers/venmo-restoration-state-handler.js.map +1 -1
- package/dist/src/payment-flow-handlers/payment-flow-handlers.d.ts +111 -111
- package/dist/src/payment-flow-handlers/payment-flow-handlers.js +107 -107
- package/dist/src/payment-flow-handlers/payment-flow-handlers.js.map +1 -1
- package/dist/src/recaptcha-manager/recaptcha-manager.d.ts +48 -48
- package/dist/src/recaptcha-manager/recaptcha-manager.js +88 -88
- package/dist/src/recaptcha-manager/recaptcha-manager.js.map +1 -1
- package/dist/src/util/promisedSleep.d.ts +1 -1
- package/dist/src/util/promisedSleep.js +3 -3
- package/dist/src/util/promisedSleep.js.map +1 -1
- package/dist/test/helpers/fillInContactForm.d.ts +2 -2
- package/dist/test/helpers/fillInContactForm.js +19 -19
- package/dist/test/helpers/fillInContactForm.js.map +1 -1
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-applepay-flow-handler.d.ts +7 -7
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-applepay-flow-handler.js +9 -9
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-applepay-flow-handler.js.map +1 -1
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-creditcard-flow-handler.d.ts +15 -15
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-creditcard-flow-handler.js +32 -32
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-creditcard-flow-handler.js.map +1 -1
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-googlepay-flow-handler.d.ts +9 -9
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-googlepay-flow-handler.js +15 -15
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-googlepay-flow-handler.js.map +1 -1
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-paypal-flow-handler.d.ts +15 -15
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-paypal-flow-handler.js +30 -30
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-paypal-flow-handler.js.map +1 -1
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-venmo-flow-handler.d.ts +9 -9
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-venmo-flow-handler.js +17 -17
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-venmo-flow-handler.js.map +1 -1
- package/dist/test/mocks/flow-handlers/mock-payment-flow-handlers.d.ts +30 -30
- package/dist/test/mocks/flow-handlers/mock-payment-flow-handlers.js +29 -29
- package/dist/test/mocks/flow-handlers/mock-payment-flow-handlers.js.map +1 -1
- package/dist/test/mocks/mock-braintree-manager.d.ts +45 -45
- package/dist/test/mocks/mock-braintree-manager.js +71 -71
- package/dist/test/mocks/mock-braintree-manager.js.map +1 -1
- package/dist/test/mocks/mock-donation-info.d.ts +4 -4
- package/dist/test/mocks/mock-donation-info.js +10 -10
- package/dist/test/mocks/mock-donation-info.js.map +1 -1
- package/dist/test/mocks/mock-endpoint-manager.d.ts +12 -12
- package/dist/test/mocks/mock-endpoint-manager.js +19 -19
- package/dist/test/mocks/mock-endpoint-manager.js.map +1 -1
- package/dist/test/mocks/mock-hosted-fields-config.d.ts +4 -4
- package/dist/test/mocks/mock-hosted-fields-config.js +37 -37
- package/dist/test/mocks/mock-hosted-fields-config.js.map +1 -1
- package/dist/test/mocks/mock-hosted-fields-container.d.ts +13 -13
- package/dist/test/mocks/mock-hosted-fields-container.js +27 -27
- package/dist/test/mocks/mock-hosted-fields-container.js.map +1 -1
- package/dist/test/mocks/mock-lazy-loader.d.ts +15 -15
- package/dist/test/mocks/mock-lazy-loader.js +20 -20
- package/dist/test/mocks/mock-lazy-loader.js.map +1 -1
- package/dist/test/mocks/mock-modal-manager.d.ts +17 -17
- package/dist/test/mocks/mock-modal-manager.js +26 -26
- package/dist/test/mocks/mock-modal-manager.js.map +1 -1
- package/dist/test/mocks/mock-payment-clients.d.ts +29 -29
- package/dist/test/mocks/mock-payment-clients.js +78 -78
- package/dist/test/mocks/mock-payment-clients.js.map +1 -1
- package/dist/test/mocks/mock-paypal-button-renderer.d.ts +5 -5
- package/dist/test/mocks/mock-paypal-button-renderer.js +6 -6
- package/dist/test/mocks/mock-paypal-button-renderer.js.map +1 -1
- package/dist/test/mocks/mock-recaptcha-manager.d.ts +7 -7
- package/dist/test/mocks/mock-recaptcha-manager.js +14 -14
- package/dist/test/mocks/mock-recaptcha-manager.js.map +1 -1
- package/dist/test/mocks/models/mock-billing-info.d.ts +2 -2
- package/dist/test/mocks/models/mock-billing-info.js +9 -9
- package/dist/test/mocks/models/mock-billing-info.js.map +1 -1
- package/dist/test/mocks/models/mock-custom-fields.d.ts +2 -2
- package/dist/test/mocks/models/mock-custom-fields.js +7 -7
- package/dist/test/mocks/models/mock-custom-fields.js.map +1 -1
- package/dist/test/mocks/models/mock-customer-info.d.ts +2 -2
- package/dist/test/mocks/models/mock-customer-info.js +6 -6
- package/dist/test/mocks/models/mock-customer-info.js.map +1 -1
- package/dist/test/mocks/models/mock-donation-request.d.ts +2 -2
- package/dist/test/mocks/models/mock-donation-request.js +18 -18
- package/dist/test/mocks/models/mock-donation-request.js.map +1 -1
- package/dist/test/mocks/models/mock-success-response.d.ts +2 -2
- package/dist/test/mocks/models/mock-success-response.js +14 -14
- package/dist/test/mocks/models/mock-success-response.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-applepay-client.d.ts +21 -21
- package/dist/test/mocks/payment-clients/mock-applepay-client.js +72 -72
- package/dist/test/mocks/payment-clients/mock-applepay-client.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-applepay-payment.d.ts +6 -6
- package/dist/test/mocks/payment-clients/mock-applepay-payment.js +42 -42
- package/dist/test/mocks/payment-clients/mock-applepay-payment.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-applepay-paymentauthorizedevent.d.ts +22 -22
- package/dist/test/mocks/payment-clients/mock-applepay-paymentauthorizedevent.js +35 -35
- package/dist/test/mocks/payment-clients/mock-applepay-paymentauthorizedevent.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-applepay-session.d.ts +30 -30
- package/dist/test/mocks/payment-clients/mock-applepay-session.js +52 -52
- package/dist/test/mocks/payment-clients/mock-applepay-session.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-applepay-sessionmanager.d.ts +10 -10
- package/dist/test/mocks/payment-clients/mock-applepay-sessionmanager.js +12 -12
- package/dist/test/mocks/payment-clients/mock-applepay-sessionmanager.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-applepay-validatemerchantevent.d.ts +22 -22
- package/dist/test/mocks/payment-clients/mock-applepay-validatemerchantevent.js +34 -34
- package/dist/test/mocks/payment-clients/mock-applepay-validatemerchantevent.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-braintree-client.d.ts +14 -14
- package/dist/test/mocks/payment-clients/mock-braintree-client.js +19 -19
- package/dist/test/mocks/payment-clients/mock-braintree-client.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-data-collector.d.ts +11 -11
- package/dist/test/mocks/payment-clients/mock-data-collector.js +17 -17
- package/dist/test/mocks/payment-clients/mock-data-collector.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-googlepay-client.d.ts +22 -22
- package/dist/test/mocks/payment-clients/mock-googlepay-client.js +42 -42
- package/dist/test/mocks/payment-clients/mock-googlepay-client.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-googlepay-library.d.ts +10 -10
- package/dist/test/mocks/payment-clients/mock-googlepay-library.js +22 -22
- package/dist/test/mocks/payment-clients/mock-googlepay-library.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-grecaptcha.d.ts +23 -23
- package/dist/test/mocks/payment-clients/mock-grecaptcha.js +62 -62
- package/dist/test/mocks/payment-clients/mock-grecaptcha.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-hostedfields-client.d.ts +33 -33
- package/dist/test/mocks/payment-clients/mock-hostedfields-client.js +54 -54
- package/dist/test/mocks/payment-clients/mock-hostedfields-client.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-hostedfieldstateobject-generator.d.ts +1 -1
- package/dist/test/mocks/payment-clients/mock-hostedfieldstateobject-generator.js +50 -50
- package/dist/test/mocks/payment-clients/mock-hostedfieldstateobject-generator.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-hostedfieldtokenizepayload.d.ts +1 -1
- package/dist/test/mocks/payment-clients/mock-hostedfieldtokenizepayload.js +13 -13
- package/dist/test/mocks/payment-clients/mock-hostedfieldtokenizepayload.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-paypal-client.d.ts +23 -23
- package/dist/test/mocks/payment-clients/mock-paypal-client.js +62 -62
- package/dist/test/mocks/payment-clients/mock-paypal-client.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-paypal-library.d.ts +4 -4
- package/dist/test/mocks/payment-clients/mock-paypal-library.js +9 -9
- package/dist/test/mocks/payment-clients/mock-paypal-library.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-venmo-client.d.ts +22 -22
- package/dist/test/mocks/payment-clients/mock-venmo-client.js +36 -36
- package/dist/test/mocks/payment-clients/mock-venmo-client.js.map +1 -1
- package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-datasource-delegate.d.ts +10 -10
- package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-datasource-delegate.js +14 -14
- package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-datasource-delegate.js.map +1 -1
- package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-handler.d.ts +9 -9
- package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-handler.js +19 -19
- package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-handler.js.map +1 -1
- package/dist/test/mocks/payment-providers/individual-providers/mock-creditcard-handler.d.ts +18 -18
- package/dist/test/mocks/payment-providers/individual-providers/mock-creditcard-handler.js +41 -41
- package/dist/test/mocks/payment-providers/individual-providers/mock-creditcard-handler.js.map +1 -1
- package/dist/test/mocks/payment-providers/individual-providers/mock-googlepay-handler.d.ts +8 -8
- package/dist/test/mocks/payment-providers/individual-providers/mock-googlepay-handler.js +16 -16
- package/dist/test/mocks/payment-providers/individual-providers/mock-googlepay-handler.js.map +1 -1
- package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource-delegate.d.ts +28 -28
- package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource-delegate.js +52 -52
- package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource-delegate.js.map +1 -1
- package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource.d.ts +11 -11
- package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource.js +37 -37
- package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource.js.map +1 -1
- package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-handler.d.ts +12 -12
- package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-handler.js +15 -15
- package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-handler.js.map +1 -1
- package/dist/test/mocks/payment-providers/individual-providers/mock-venmo-handler.d.ts +7 -7
- package/dist/test/mocks/payment-providers/individual-providers/mock-venmo-handler.js +22 -22
- package/dist/test/mocks/payment-providers/individual-providers/mock-venmo-handler.js.map +1 -1
- package/dist/test/mocks/payment-providers/mock-payment-providers.d.ts +21 -21
- package/dist/test/mocks/payment-providers/mock-payment-providers.js +45 -45
- package/dist/test/mocks/payment-providers/mock-payment-providers.js.map +1 -1
- package/dist/test/tests/braintree-manager.test.d.ts +1 -1
- package/dist/test/tests/braintree-manager.test.js +166 -166
- package/dist/test/tests/braintree-manager.test.js.map +1 -1
- package/dist/test/tests/donation-form-controller.test.d.ts +1 -1
- package/dist/test/tests/donation-form-controller.test.js +188 -199
- package/dist/test/tests/donation-form-controller.test.js.map +1 -1
- package/dist/test/tests/donation-form.test.d.ts +1 -1
- package/dist/test/tests/donation-form.test.js +109 -109
- package/dist/test/tests/donation-form.test.js.map +1 -1
- package/dist/test/tests/flow-handlers/donation-flow-modal-manager.test.d.ts +1 -1
- package/dist/test/tests/flow-handlers/donation-flow-modal-manager.test.js +216 -216
- package/dist/test/tests/flow-handlers/donation-flow-modal-manager.test.js.map +1 -1
- package/dist/test/tests/form-elements/donation-summary.test.d.ts +1 -1
- package/dist/test/tests/form-elements/donation-summary.test.js +36 -36
- package/dist/test/tests/form-elements/donation-summary.test.js.map +1 -1
- package/dist/test/tests/form-elements/payment-selector.test.d.ts +1 -1
- package/dist/test/tests/form-elements/payment-selector.test.js +69 -69
- package/dist/test/tests/form-elements/payment-selector.test.js.map +1 -1
- package/dist/test/tests/modals/error-modal-content.test.d.ts +1 -1
- package/dist/test/tests/modals/error-modal-content.test.js +14 -14
- package/dist/test/tests/modals/error-modal-content.test.js.map +1 -1
- package/dist/test/tests/modals/upsell-modal-content.test.d.ts +1 -1
- package/dist/test/tests/modals/upsell-modal-content.test.js +163 -163
- package/dist/test/tests/modals/upsell-modal-content.test.js.map +1 -1
- package/dist/test/tests/models/donation-payment-info.test.d.ts +1 -1
- package/dist/test/tests/models/donation-payment-info.test.js +74 -74
- package/dist/test/tests/models/donation-payment-info.test.js.map +1 -1
- package/dist/test/tests/payment-clients.test.d.ts +1 -1
- package/dist/test/tests/payment-clients.test.js +130 -130
- package/dist/test/tests/payment-clients.test.js.map +1 -1
- package/dist/test/tests/payment-providers/applepay-sessiondatasource.test.d.ts +1 -1
- package/dist/test/tests/payment-providers/applepay-sessiondatasource.test.js +160 -160
- package/dist/test/tests/payment-providers/applepay-sessiondatasource.test.js.map +1 -1
- package/dist/test/tests/payment-providers/applepay-sessionmanager.test.d.ts +1 -1
- package/dist/test/tests/payment-providers/applepay-sessionmanager.test.js +36 -36
- package/dist/test/tests/payment-providers/applepay-sessionmanager.test.js.map +1 -1
- package/dist/test/tests/payment-providers/applepay.test.d.ts +1 -1
- package/dist/test/tests/payment-providers/applepay.test.js +78 -78
- package/dist/test/tests/payment-providers/applepay.test.js.map +1 -1
- package/dist/test/tests/payment-providers/creditcard.test.d.ts +1 -1
- package/dist/test/tests/payment-providers/creditcard.test.js +190 -190
- package/dist/test/tests/payment-providers/creditcard.test.js.map +1 -1
- package/dist/test/tests/payment-providers/googlepay.test.d.ts +1 -1
- package/dist/test/tests/payment-providers/googlepay.test.js +48 -48
- package/dist/test/tests/payment-providers/googlepay.test.js.map +1 -1
- package/dist/test/tests/payment-providers/payment-providers.test.d.ts +1 -1
- package/dist/test/tests/payment-providers/payment-providers.test.js +38 -38
- package/dist/test/tests/payment-providers/payment-providers.test.js.map +1 -1
- package/dist/test/tests/payment-providers/paypal-button-datasource.test.d.ts +1 -1
- package/dist/test/tests/payment-providers/paypal-button-datasource.test.js +162 -162
- package/dist/test/tests/payment-providers/paypal-button-datasource.test.js.map +1 -1
- package/dist/test/tests/payment-providers/paypal.test.d.ts +1 -1
- package/dist/test/tests/payment-providers/paypal.test.js +38 -38
- package/dist/test/tests/payment-providers/paypal.test.js.map +1 -1
- package/dist/test/tests/payment-providers/venmo.test.d.ts +1 -1
- package/dist/test/tests/payment-providers/venmo.test.js +77 -77
- package/dist/test/tests/payment-providers/venmo.test.js.map +1 -1
- package/dist/test/tests/recaptcha-manager.test.d.ts +1 -1
- package/dist/test/tests/recaptcha-manager.test.js +70 -70
- package/dist/test/tests/recaptcha-manager.test.js.map +1 -1
- package/package.json +101 -101
- package/src/@types/analytics-handler/index.d.ts +8 -8
- package/src/@types/braintree-web/LICENSE +21 -21
- package/src/@types/braintree-web/index.d.ts +93 -93
- package/src/@types/braintree-web/modules/american-express.d.ts +50 -50
- package/src/@types/braintree-web/modules/apple-pay.d.ts +213 -213
- package/src/@types/braintree-web/modules/client.d.ts +103 -103
- package/src/@types/braintree-web/modules/core.d.ts +34 -34
- package/src/@types/braintree-web/modules/data-collector.d.ts +13 -13
- package/src/@types/braintree-web/modules/google-payment.d.ts +269 -269
- package/src/@types/braintree-web/modules/hosted-fields.d.ts +366 -366
- package/src/@types/braintree-web/modules/paypal-checkout.d.ts +262 -262
- package/src/@types/braintree-web/modules/paypal.d.ts +177 -177
- package/src/@types/braintree-web/modules/three-d-secure.d.ts +141 -141
- package/src/@types/braintree-web/modules/unionpay.d.ts +224 -224
- package/src/@types/braintree-web/modules/us-bank-account.d.ts +81 -81
- package/src/@types/braintree-web/modules/venmo.d.ts +110 -110
- package/src/@types/braintree-web/package.json +64 -64
- package/src/@types/paypal-checkout-components/LICENSE +21 -21
- package/src/@types/paypal-checkout-components/index.d.ts +67 -67
- package/src/@types/paypal-checkout-components/modules/button.d.ts +50 -50
- package/src/@types/paypal-checkout-components/modules/callback-data.d.ts +244 -244
- package/src/@types/paypal-checkout-components/modules/configuration.d.ts +114 -114
- package/src/@types/paypal-checkout-components/package.json +58 -58
- package/src/braintree-manager/braintree-interfaces.ts +172 -172
- package/src/braintree-manager/braintree-manager.ts +283 -283
- package/src/braintree-manager/payment-clients.ts +148 -148
- package/src/braintree-manager/payment-providers/apple-pay/apple-pay-interface.ts +13 -13
- package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-delegate.ts +8 -8
- package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-interface.ts +10 -10
- package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource.ts +119 -119
- package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-manager.ts +21 -21
- package/src/braintree-manager/payment-providers/apple-pay/apple-pay.ts +98 -98
- package/src/braintree-manager/payment-providers/credit-card/credit-card-interface.ts +21 -21
- package/src/braintree-manager/payment-providers/credit-card/credit-card.ts +130 -130
- package/src/braintree-manager/payment-providers/credit-card/hosted-field-configuration.ts +19 -19
- package/src/braintree-manager/payment-providers/credit-card/hosted-field-container.ts +85 -85
- package/src/braintree-manager/payment-providers/google-pay-interface.ts +8 -8
- package/src/braintree-manager/payment-providers/google-pay.ts +59 -59
- package/src/braintree-manager/payment-providers/paypal/paypal-button-datasource.ts +218 -218
- package/src/braintree-manager/payment-providers/paypal/paypal-interface.ts +13 -13
- package/src/braintree-manager/payment-providers/paypal/paypal.ts +78 -78
- package/src/braintree-manager/payment-providers/venmo-interface.ts +8 -8
- package/src/braintree-manager/payment-providers/venmo.ts +67 -67
- package/src/braintree-manager/payment-providers-interface.ts +25 -25
- package/src/braintree-manager/payment-providers.ts +147 -147
- package/src/donation-form-controller.ts +619 -619
- package/src/donation-form-error.ts +6 -6
- package/src/donation-form.ts +566 -566
- package/src/form-elements/badged-input.ts +113 -113
- package/src/form-elements/contact-form/autocomplete-field-options.ts +63 -63
- package/src/form-elements/contact-form/contact-form.ts +427 -427
- package/src/form-elements/contact-form/countries.ts +252 -252
- package/src/form-elements/header/donation-form-header.ts +100 -100
- package/src/form-elements/header/donation-summary.ts +61 -61
- package/src/form-elements/payment-selector.ts +293 -293
- package/src/form-elements/total-amount.ts +46 -46
- package/src/modals/confirm-donation-modal-content.ts +160 -160
- package/src/modals/error-modal-content.ts +48 -48
- package/src/modals/upsell-modal-content.ts +294 -294
- package/src/payment-flow-handlers/donation-flow-modal-manager.ts +450 -450
- package/src/payment-flow-handlers/handlers/applepay-flow-handler.ts +108 -108
- package/src/payment-flow-handlers/handlers/creditcard-flow-handler.ts +231 -231
- package/src/payment-flow-handlers/handlers/googlepay-flow-handler.ts +113 -113
- package/src/payment-flow-handlers/handlers/paypal-flow-handler.ts +332 -332
- package/src/payment-flow-handlers/handlers/venmo-flow-handler.ts +118 -118
- package/src/payment-flow-handlers/handlers/venmo-restoration-state-handler.ts +127 -127
- package/src/payment-flow-handlers/payment-flow-handlers.ts +218 -218
- package/src/recaptcha-manager/recaptcha-manager.ts +123 -123
- package/src/util/promisedSleep.ts +3 -3
- package/dist/test/mocks/mock-analytics-handler.d.ts +0 -8
- package/dist/test/mocks/mock-analytics-handler.js +0 -10
- package/dist/test/mocks/mock-analytics-handler.js.map +0 -1
|
@@ -1,150 +1,150 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { DonationResponse, DonationRequest, DonationRequestCustomFields, DonationType, DonationPaymentInfo, } from '@internetarchive/donation-form-data-models';
|
|
3
|
-
import { PaymentProviders } from './payment-providers';
|
|
4
|
-
import { HostingEnvironment, } from './braintree-interfaces';
|
|
5
|
-
import { PromisedSingleton } from '@internetarchive/promised-singleton';
|
|
6
|
-
import { createNanoEvents } from 'nanoevents';
|
|
7
|
-
/** @inheritdoc */
|
|
8
|
-
export class BraintreeManager {
|
|
9
|
-
constructor(options) {
|
|
10
|
-
this.emitter = createNanoEvents();
|
|
11
|
-
/** @inheritdoc */
|
|
12
|
-
this.instance = new PromisedSingleton({
|
|
13
|
-
generator: () => __awaiter(this, void 0, void 0, function* () {
|
|
14
|
-
const client = yield this.paymentClients.braintreeClient.get();
|
|
15
|
-
return client === null || client === void 0 ? void 0 : client.create({ authorization: this.authorizationToken });
|
|
16
|
-
}),
|
|
17
|
-
});
|
|
18
|
-
this.deviceDataCollectionStarted = false;
|
|
19
|
-
this.hostingEnvironment = HostingEnvironment.Development;
|
|
20
|
-
this.authorizationToken = options.authorizationToken;
|
|
21
|
-
this.endpointManager = options.endpointManager;
|
|
22
|
-
this.hostingEnvironment = options.hostingEnvironment;
|
|
23
|
-
this.paymentClients = options.paymentClients;
|
|
24
|
-
this.referrer = options.referrer;
|
|
25
|
-
this.loggedInUser = options.loggedInUser;
|
|
26
|
-
this.origin = options.origin;
|
|
27
|
-
this.paymentProviders = new PaymentProviders({
|
|
28
|
-
braintreeManager: this,
|
|
29
|
-
paymentClients: this.paymentClients,
|
|
30
|
-
venmoProfileId: options.venmoProfileId,
|
|
31
|
-
googlePayMerchantId: options.googlePayMerchantId,
|
|
32
|
-
hostingEnvironment: options.hostingEnvironment,
|
|
33
|
-
hostedFieldConfig: options.hostedFieldConfig,
|
|
34
|
-
});
|
|
35
|
-
this.paymentProviders.on('hostedFieldsRetry', (retryNumber) => {
|
|
36
|
-
this.emitter.emit('paymentProvidersHostedFieldsRetry', retryNumber);
|
|
37
|
-
});
|
|
38
|
-
this.paymentProviders.on('hostedFieldsFailed', (error) => {
|
|
39
|
-
this.emitter.emit('paymentProvidersHostedFieldsFailed', error);
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
on(event, callback) {
|
|
43
|
-
return this.emitter.on(event, callback);
|
|
44
|
-
}
|
|
45
|
-
/** @inheritdoc */
|
|
46
|
-
startup() {
|
|
47
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
-
return this.collectDeviceData();
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
/** @inheritdoc */
|
|
52
|
-
submitDonation(options) {
|
|
53
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
54
|
-
const customFields = new DonationRequestCustomFields();
|
|
55
|
-
// eslint-disable-next-line @typescript-eslint/camelcase
|
|
56
|
-
customFields.fee_amount_covered = options.donationInfo.feeAmountCovered;
|
|
57
|
-
// eslint-disable-next-line @typescript-eslint/camelcase
|
|
58
|
-
customFields.logged_in_user = this.loggedInUser;
|
|
59
|
-
customFields.referrer = this.referrer;
|
|
60
|
-
customFields.origin = this.origin;
|
|
61
|
-
// This is interesting and applies only to Venmo, but will work for other providers as well.
|
|
62
|
-
// In Safari, `donationInfo` actually comes through as a DonationPaymentInfo object,
|
|
63
|
-
// but in Chrome, it comes through as a plain object so you can't call `.total()` on it to
|
|
64
|
-
// get the total amount and instead have to calculate the total
|
|
65
|
-
const total = DonationPaymentInfo.calculateTotal(options.donationInfo.amount, options.donationInfo.coverFees);
|
|
66
|
-
const donationRequest = new DonationRequest({
|
|
67
|
-
deviceData: this.deviceData,
|
|
68
|
-
paymentProvider: options.paymentProvider,
|
|
69
|
-
paymentMethodNonce: options.nonce,
|
|
70
|
-
amount: total,
|
|
71
|
-
donationType: options.donationInfo.donationType,
|
|
72
|
-
customer: options.customerInfo,
|
|
73
|
-
billing: options.billingInfo,
|
|
74
|
-
customFields: customFields,
|
|
75
|
-
upsellOnetimeTransactionId: options.upsellOnetimeTransactionId,
|
|
76
|
-
customerId: options.customerId,
|
|
77
|
-
recaptchaToken: options.recaptchaToken,
|
|
78
|
-
bin: options.bin,
|
|
79
|
-
binName: options.binName,
|
|
80
|
-
});
|
|
81
|
-
const jsonResponse = yield this.endpointManager.submitData(donationRequest);
|
|
82
|
-
const modeledResponse = new DonationResponse(jsonResponse);
|
|
83
|
-
return modeledResponse;
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
/** @inheritdoc */
|
|
87
|
-
submitUpsellDonation(options) {
|
|
88
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
89
|
-
const response = options.oneTimeDonationResponse;
|
|
90
|
-
const donationInfo = new DonationPaymentInfo({
|
|
91
|
-
amount: options.amount,
|
|
92
|
-
donationType: DonationType.Upsell,
|
|
93
|
-
coverFees: false,
|
|
94
|
-
});
|
|
95
|
-
return this.submitDonation({
|
|
96
|
-
nonce: response.paymentMethodNonce,
|
|
97
|
-
paymentProvider: response.paymentProvider,
|
|
98
|
-
customerId: response.customer_id,
|
|
99
|
-
donationInfo: donationInfo,
|
|
100
|
-
customerInfo: response.customer,
|
|
101
|
-
billingInfo: response.billing,
|
|
102
|
-
upsellOnetimeTransactionId: response.transaction_id,
|
|
103
|
-
});
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
/** @inheritdoc */
|
|
107
|
-
donationSuccessful(options) {
|
|
108
|
-
this.endpointManager.donationSuccessful(options);
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Collect Braintree device data. This is used to help fraud detection.
|
|
112
|
-
*
|
|
113
|
-
* @private
|
|
114
|
-
* @returns {Promise<void>}
|
|
115
|
-
* @memberof BraintreeManager
|
|
116
|
-
*/
|
|
117
|
-
collectDeviceData() {
|
|
118
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
119
|
-
if (this.deviceDataCollectionStarted) {
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
this.deviceDataCollectionStarted = true;
|
|
123
|
-
const instance = yield this.instance.get();
|
|
124
|
-
if (!instance) {
|
|
125
|
-
return;
|
|
126
|
-
}
|
|
127
|
-
return this.paymentClients.dataCollector
|
|
128
|
-
.get()
|
|
129
|
-
.then((collector) => {
|
|
130
|
-
return collector === null || collector === void 0 ? void 0 : collector.create({ client: instance, kount: false, paypal: true });
|
|
131
|
-
})
|
|
132
|
-
.then(instance => {
|
|
133
|
-
this.deviceData = instance === null || instance === void 0 ? void 0 : instance.deviceData;
|
|
134
|
-
});
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
/** @inheritdoc */
|
|
138
|
-
setReferrer(referrer) {
|
|
139
|
-
this.referrer = referrer;
|
|
140
|
-
}
|
|
141
|
-
/** @inheritdoc */
|
|
142
|
-
setLoggedInUser(loggedInUser) {
|
|
143
|
-
this.loggedInUser = loggedInUser;
|
|
144
|
-
}
|
|
145
|
-
/** @inheritdoc */
|
|
146
|
-
setOrigin(origin) {
|
|
147
|
-
this.origin = origin;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { DonationResponse, DonationRequest, DonationRequestCustomFields, DonationType, DonationPaymentInfo, } from '@internetarchive/donation-form-data-models';
|
|
3
|
+
import { PaymentProviders } from './payment-providers';
|
|
4
|
+
import { HostingEnvironment, } from './braintree-interfaces';
|
|
5
|
+
import { PromisedSingleton } from '@internetarchive/promised-singleton';
|
|
6
|
+
import { createNanoEvents } from 'nanoevents';
|
|
7
|
+
/** @inheritdoc */
|
|
8
|
+
export class BraintreeManager {
|
|
9
|
+
constructor(options) {
|
|
10
|
+
this.emitter = createNanoEvents();
|
|
11
|
+
/** @inheritdoc */
|
|
12
|
+
this.instance = new PromisedSingleton({
|
|
13
|
+
generator: () => __awaiter(this, void 0, void 0, function* () {
|
|
14
|
+
const client = yield this.paymentClients.braintreeClient.get();
|
|
15
|
+
return client === null || client === void 0 ? void 0 : client.create({ authorization: this.authorizationToken });
|
|
16
|
+
}),
|
|
17
|
+
});
|
|
18
|
+
this.deviceDataCollectionStarted = false;
|
|
19
|
+
this.hostingEnvironment = HostingEnvironment.Development;
|
|
20
|
+
this.authorizationToken = options.authorizationToken;
|
|
21
|
+
this.endpointManager = options.endpointManager;
|
|
22
|
+
this.hostingEnvironment = options.hostingEnvironment;
|
|
23
|
+
this.paymentClients = options.paymentClients;
|
|
24
|
+
this.referrer = options.referrer;
|
|
25
|
+
this.loggedInUser = options.loggedInUser;
|
|
26
|
+
this.origin = options.origin;
|
|
27
|
+
this.paymentProviders = new PaymentProviders({
|
|
28
|
+
braintreeManager: this,
|
|
29
|
+
paymentClients: this.paymentClients,
|
|
30
|
+
venmoProfileId: options.venmoProfileId,
|
|
31
|
+
googlePayMerchantId: options.googlePayMerchantId,
|
|
32
|
+
hostingEnvironment: options.hostingEnvironment,
|
|
33
|
+
hostedFieldConfig: options.hostedFieldConfig,
|
|
34
|
+
});
|
|
35
|
+
this.paymentProviders.on('hostedFieldsRetry', (retryNumber) => {
|
|
36
|
+
this.emitter.emit('paymentProvidersHostedFieldsRetry', retryNumber);
|
|
37
|
+
});
|
|
38
|
+
this.paymentProviders.on('hostedFieldsFailed', (error) => {
|
|
39
|
+
this.emitter.emit('paymentProvidersHostedFieldsFailed', error);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
on(event, callback) {
|
|
43
|
+
return this.emitter.on(event, callback);
|
|
44
|
+
}
|
|
45
|
+
/** @inheritdoc */
|
|
46
|
+
startup() {
|
|
47
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
return this.collectDeviceData();
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/** @inheritdoc */
|
|
52
|
+
submitDonation(options) {
|
|
53
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
54
|
+
const customFields = new DonationRequestCustomFields();
|
|
55
|
+
// eslint-disable-next-line @typescript-eslint/camelcase
|
|
56
|
+
customFields.fee_amount_covered = options.donationInfo.feeAmountCovered;
|
|
57
|
+
// eslint-disable-next-line @typescript-eslint/camelcase
|
|
58
|
+
customFields.logged_in_user = this.loggedInUser;
|
|
59
|
+
customFields.referrer = this.referrer;
|
|
60
|
+
customFields.origin = this.origin;
|
|
61
|
+
// This is interesting and applies only to Venmo, but will work for other providers as well.
|
|
62
|
+
// In Safari, `donationInfo` actually comes through as a DonationPaymentInfo object,
|
|
63
|
+
// but in Chrome, it comes through as a plain object so you can't call `.total()` on it to
|
|
64
|
+
// get the total amount and instead have to calculate the total
|
|
65
|
+
const total = DonationPaymentInfo.calculateTotal(options.donationInfo.amount, options.donationInfo.coverFees);
|
|
66
|
+
const donationRequest = new DonationRequest({
|
|
67
|
+
deviceData: this.deviceData,
|
|
68
|
+
paymentProvider: options.paymentProvider,
|
|
69
|
+
paymentMethodNonce: options.nonce,
|
|
70
|
+
amount: total,
|
|
71
|
+
donationType: options.donationInfo.donationType,
|
|
72
|
+
customer: options.customerInfo,
|
|
73
|
+
billing: options.billingInfo,
|
|
74
|
+
customFields: customFields,
|
|
75
|
+
upsellOnetimeTransactionId: options.upsellOnetimeTransactionId,
|
|
76
|
+
customerId: options.customerId,
|
|
77
|
+
recaptchaToken: options.recaptchaToken,
|
|
78
|
+
bin: options.bin,
|
|
79
|
+
binName: options.binName,
|
|
80
|
+
});
|
|
81
|
+
const jsonResponse = yield this.endpointManager.submitData(donationRequest);
|
|
82
|
+
const modeledResponse = new DonationResponse(jsonResponse);
|
|
83
|
+
return modeledResponse;
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
/** @inheritdoc */
|
|
87
|
+
submitUpsellDonation(options) {
|
|
88
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
89
|
+
const response = options.oneTimeDonationResponse;
|
|
90
|
+
const donationInfo = new DonationPaymentInfo({
|
|
91
|
+
amount: options.amount,
|
|
92
|
+
donationType: DonationType.Upsell,
|
|
93
|
+
coverFees: false,
|
|
94
|
+
});
|
|
95
|
+
return this.submitDonation({
|
|
96
|
+
nonce: response.paymentMethodNonce,
|
|
97
|
+
paymentProvider: response.paymentProvider,
|
|
98
|
+
customerId: response.customer_id,
|
|
99
|
+
donationInfo: donationInfo,
|
|
100
|
+
customerInfo: response.customer,
|
|
101
|
+
billingInfo: response.billing,
|
|
102
|
+
upsellOnetimeTransactionId: response.transaction_id,
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
/** @inheritdoc */
|
|
107
|
+
donationSuccessful(options) {
|
|
108
|
+
this.endpointManager.donationSuccessful(options);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Collect Braintree device data. This is used to help fraud detection.
|
|
112
|
+
*
|
|
113
|
+
* @private
|
|
114
|
+
* @returns {Promise<void>}
|
|
115
|
+
* @memberof BraintreeManager
|
|
116
|
+
*/
|
|
117
|
+
collectDeviceData() {
|
|
118
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
119
|
+
if (this.deviceDataCollectionStarted) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
this.deviceDataCollectionStarted = true;
|
|
123
|
+
const instance = yield this.instance.get();
|
|
124
|
+
if (!instance) {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
return this.paymentClients.dataCollector
|
|
128
|
+
.get()
|
|
129
|
+
.then((collector) => {
|
|
130
|
+
return collector === null || collector === void 0 ? void 0 : collector.create({ client: instance, kount: false, paypal: true });
|
|
131
|
+
})
|
|
132
|
+
.then(instance => {
|
|
133
|
+
this.deviceData = instance === null || instance === void 0 ? void 0 : instance.deviceData;
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
/** @inheritdoc */
|
|
138
|
+
setReferrer(referrer) {
|
|
139
|
+
this.referrer = referrer;
|
|
140
|
+
}
|
|
141
|
+
/** @inheritdoc */
|
|
142
|
+
setLoggedInUser(loggedInUser) {
|
|
143
|
+
this.loggedInUser = loggedInUser;
|
|
144
|
+
}
|
|
145
|
+
/** @inheritdoc */
|
|
146
|
+
setOrigin(origin) {
|
|
147
|
+
this.origin = origin;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
150
|
//# sourceMappingURL=braintree-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"braintree-manager.js","sourceRoot":"","sources":["../../../src/braintree-manager/braintree-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DonationResponse,\n DonationRequest,\n DonationRequestCustomFields,\n DonationType,\n CustomerInfo,\n BillingInfo,\n DonationPaymentInfo,\n PaymentProvider,\n SuccessResponse,\n} from '@internetarchive/donation-form-data-models';\n\nimport { PaymentProviders } from './payment-providers';\nimport { PaymentClientsInterface } from './payment-clients';\nimport {\n BraintreeManagerInterface,\n BraintreeEndpointManagerInterface,\n HostingEnvironment,\n BraintreeManagerEvents,\n} from './braintree-interfaces';\nimport { HostedFieldConfiguration } from './payment-providers/credit-card/hosted-field-configuration';\nimport { PromisedSingleton } from '@internetarchive/promised-singleton';\nimport { PaymentProvidersInterface } from './payment-providers-interface';\nimport { createNanoEvents, Unsubscribe } from 'nanoevents';\n\n/** @inheritdoc */\nexport class BraintreeManager implements BraintreeManagerInterface {\n private referrer?: string;\n\n /**\n * The origin is made up of campaign / ABTest information that the user originated from.\n *\n * The field is a freeform string so it can be anything, but make sure it's something\n * identifiable so it can be queried in CiviCRM.\n *\n * For instance, we use this format for the Donation Banner:\n * - `{Source}-{Test Name}-{Variant Name}`, eg:\n * - `DonateBanner-Campaign Start 2020-IADefault`\n * - `DonateBanner-Mid Campaign-IAThermometer`\n *\n * For additional specificity, you could add additional info, ie.\n * - `DonateBanner-MidJuly2020 Campaign-VariantA-Button1`\n *\n * @private\n * @type {string}\n * @memberof BraintreeManager\n */\n private origin?: string;\n\n private loggedInUser?: string;\n\n /**\n * The Device Data token generated by the DataCollector.\n *\n * This gets submitted for several of the payment providers as an anti-fraud mechanism.\n *\n * @private\n * @type {string}\n * @memberof BraintreeManager\n */\n private deviceData?: string;\n\n private emitter = createNanoEvents<BraintreeManagerEvents>();\n\n on<E extends keyof BraintreeManagerEvents>(\n event: E,\n callback: BraintreeManagerEvents[E],\n ): Unsubscribe {\n return this.emitter.on(event, callback);\n }\n\n /** @inheritdoc */\n paymentProviders: PaymentProvidersInterface;\n\n /** @inheritdoc */\n async startup(): Promise<void> {\n return this.collectDeviceData();\n }\n\n /** @inheritdoc */\n instance = new PromisedSingleton<braintree.Client>({\n generator: async (): Promise<braintree.Client> => {\n const client = await this.paymentClients.braintreeClient.get();\n return client?.create({ authorization: this.authorizationToken });\n },\n });\n\n /** @inheritdoc */\n async submitDonation(options: {\n nonce: string;\n paymentProvider: PaymentProvider;\n donationInfo: DonationPaymentInfo;\n billingInfo: BillingInfo;\n customerInfo: CustomerInfo;\n upsellOnetimeTransactionId?: string;\n customerId?: string;\n recaptchaToken?: string;\n bin?: string; // first 6 digits of CC\n binName?: string; // credit card bank name\n }): Promise<DonationResponse> {\n const customFields = new DonationRequestCustomFields();\n // eslint-disable-next-line @typescript-eslint/camelcase\n customFields.fee_amount_covered = options.donationInfo.feeAmountCovered;\n // eslint-disable-next-line @typescript-eslint/camelcase\n customFields.logged_in_user = this.loggedInUser;\n customFields.referrer = this.referrer;\n customFields.origin = this.origin;\n\n // This is interesting and applies only to Venmo, but will work for other providers as well.\n // In Safari, `donationInfo` actually comes through as a DonationPaymentInfo object,\n // but in Chrome, it comes through as a plain object so you can't call `.total()` on it to\n // get the total amount and instead have to calculate the total\n const total = DonationPaymentInfo.calculateTotal(\n options.donationInfo.amount,\n options.donationInfo.coverFees,\n );\n\n const donationRequest = new DonationRequest({\n deviceData: this.deviceData,\n paymentProvider: options.paymentProvider,\n paymentMethodNonce: options.nonce,\n amount: total,\n donationType: options.donationInfo.donationType,\n customer: options.customerInfo,\n billing: options.billingInfo,\n customFields: customFields,\n upsellOnetimeTransactionId: options.upsellOnetimeTransactionId,\n customerId: options.customerId,\n recaptchaToken: options.recaptchaToken,\n bin: options.bin,\n binName: options.binName,\n });\n\n const jsonResponse = await this.endpointManager.submitData(donationRequest);\n const modeledResponse = new DonationResponse(jsonResponse);\n return modeledResponse;\n }\n\n /** @inheritdoc */\n async submitUpsellDonation(options: {\n oneTimeDonationResponse: SuccessResponse;\n amount: number;\n }): Promise<DonationResponse> {\n const response = options.oneTimeDonationResponse;\n\n const donationInfo = new DonationPaymentInfo({\n amount: options.amount,\n donationType: DonationType.Upsell,\n coverFees: false,\n });\n\n return this.submitDonation({\n nonce: response.paymentMethodNonce,\n paymentProvider: response.paymentProvider,\n customerId: response.customer_id,\n donationInfo: donationInfo,\n customerInfo: response.customer,\n billingInfo: response.billing,\n upsellOnetimeTransactionId: response.transaction_id,\n });\n }\n\n /** @inheritdoc */\n donationSuccessful(options: {\n successResponse: SuccessResponse;\n upsellSuccessResponse?: SuccessResponse;\n }): void {\n this.endpointManager.donationSuccessful(options);\n }\n\n private deviceDataCollectionStarted = false;\n\n /**\n * Collect Braintree device data. This is used to help fraud detection.\n *\n * @private\n * @returns {Promise<void>}\n * @memberof BraintreeManager\n */\n private async collectDeviceData(): Promise<void> {\n if (this.deviceDataCollectionStarted) {\n return;\n }\n this.deviceDataCollectionStarted = true;\n\n const instance = await this.instance.get();\n if (!instance) {\n return;\n }\n\n return this.paymentClients.dataCollector\n .get()\n .then((collector?: braintree.DataCollector) => {\n return collector?.create({ client: instance, kount: false, paypal: true });\n })\n .then(instance => {\n this.deviceData = instance?.deviceData;\n });\n }\n\n /**\n * Braintree Authorization Token\n *\n * @private\n * @type {string}\n * @memberof BraintreeManager\n */\n private authorizationToken: string;\n\n /**\n * The endpoint manager for network communications\n *\n * @private\n * @type {BraintreeEndpointManagerInterface}\n * @memberof BraintreeManager\n */\n private endpointManager: BraintreeEndpointManagerInterface;\n\n /**\n * The payment clients container containing the braintree, paypal, and google clients\n *\n * @private\n * @type {PaymentClientsInterface}\n * @memberof BraintreeManager\n */\n private paymentClients: PaymentClientsInterface;\n\n private hostingEnvironment: HostingEnvironment = HostingEnvironment.Development;\n\n constructor(options: {\n authorizationToken: string;\n paymentClients: PaymentClientsInterface;\n endpointManager: BraintreeEndpointManagerInterface;\n hostedFieldConfig: HostedFieldConfiguration;\n hostingEnvironment: HostingEnvironment;\n venmoProfileId?: string;\n googlePayMerchantId?: string;\n referrer?: string;\n loggedInUser?: string;\n origin?: string;\n }) {\n this.authorizationToken = options.authorizationToken;\n this.endpointManager = options.endpointManager;\n this.hostingEnvironment = options.hostingEnvironment;\n this.paymentClients = options.paymentClients;\n\n this.referrer = options.referrer;\n this.loggedInUser = options.loggedInUser;\n this.origin = options.origin;\n\n this.paymentProviders = new PaymentProviders({\n braintreeManager: this,\n paymentClients: this.paymentClients,\n venmoProfileId: options.venmoProfileId,\n googlePayMerchantId: options.googlePayMerchantId,\n hostingEnvironment: options.hostingEnvironment,\n hostedFieldConfig: options.hostedFieldConfig,\n });\n\n this.paymentProviders.on('hostedFieldsRetry', (retryNumber: number) => {\n this.emitter.emit('paymentProvidersHostedFieldsRetry', retryNumber);\n });\n\n this.paymentProviders.on('hostedFieldsFailed', (error: unknown) => {\n this.emitter.emit('paymentProvidersHostedFieldsFailed', error);\n });\n }\n\n /** @inheritdoc */\n setReferrer(referrer: string): void {\n this.referrer = referrer;\n }\n\n /** @inheritdoc */\n setLoggedInUser(loggedInUser: string): void {\n this.loggedInUser = loggedInUser;\n }\n\n /** @inheritdoc */\n setOrigin(origin: string): void {\n this.origin = origin;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"braintree-manager.js","sourceRoot":"","sources":["../../../src/braintree-manager/braintree-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n DonationResponse,\r\n DonationRequest,\r\n DonationRequestCustomFields,\r\n DonationType,\r\n CustomerInfo,\r\n BillingInfo,\r\n DonationPaymentInfo,\r\n PaymentProvider,\r\n SuccessResponse,\r\n} from '@internetarchive/donation-form-data-models';\r\n\r\nimport { PaymentProviders } from './payment-providers';\r\nimport { PaymentClientsInterface } from './payment-clients';\r\nimport {\r\n BraintreeManagerInterface,\r\n BraintreeEndpointManagerInterface,\r\n HostingEnvironment,\r\n BraintreeManagerEvents,\r\n} from './braintree-interfaces';\r\nimport { HostedFieldConfiguration } from './payment-providers/credit-card/hosted-field-configuration';\r\nimport { PromisedSingleton } from '@internetarchive/promised-singleton';\r\nimport { PaymentProvidersInterface } from './payment-providers-interface';\r\nimport { createNanoEvents, Unsubscribe } from 'nanoevents';\r\n\r\n/** @inheritdoc */\r\nexport class BraintreeManager implements BraintreeManagerInterface {\r\n private referrer?: string;\r\n\r\n /**\r\n * The origin is made up of campaign / ABTest information that the user originated from.\r\n *\r\n * The field is a freeform string so it can be anything, but make sure it's something\r\n * identifiable so it can be queried in CiviCRM.\r\n *\r\n * For instance, we use this format for the Donation Banner:\r\n * - `{Source}-{Test Name}-{Variant Name}`, eg:\r\n * - `DonateBanner-Campaign Start 2020-IADefault`\r\n * - `DonateBanner-Mid Campaign-IAThermometer`\r\n *\r\n * For additional specificity, you could add additional info, ie.\r\n * - `DonateBanner-MidJuly2020 Campaign-VariantA-Button1`\r\n *\r\n * @private\r\n * @type {string}\r\n * @memberof BraintreeManager\r\n */\r\n private origin?: string;\r\n\r\n private loggedInUser?: string;\r\n\r\n /**\r\n * The Device Data token generated by the DataCollector.\r\n *\r\n * This gets submitted for several of the payment providers as an anti-fraud mechanism.\r\n *\r\n * @private\r\n * @type {string}\r\n * @memberof BraintreeManager\r\n */\r\n private deviceData?: string;\r\n\r\n private emitter = createNanoEvents<BraintreeManagerEvents>();\r\n\r\n on<E extends keyof BraintreeManagerEvents>(\r\n event: E,\r\n callback: BraintreeManagerEvents[E],\r\n ): Unsubscribe {\r\n return this.emitter.on(event, callback);\r\n }\r\n\r\n /** @inheritdoc */\r\n paymentProviders: PaymentProvidersInterface;\r\n\r\n /** @inheritdoc */\r\n async startup(): Promise<void> {\r\n return this.collectDeviceData();\r\n }\r\n\r\n /** @inheritdoc */\r\n instance = new PromisedSingleton<braintree.Client>({\r\n generator: async (): Promise<braintree.Client> => {\r\n const client = await this.paymentClients.braintreeClient.get();\r\n return client?.create({ authorization: this.authorizationToken });\r\n },\r\n });\r\n\r\n /** @inheritdoc */\r\n async submitDonation(options: {\r\n nonce: string;\r\n paymentProvider: PaymentProvider;\r\n donationInfo: DonationPaymentInfo;\r\n billingInfo: BillingInfo;\r\n customerInfo: CustomerInfo;\r\n upsellOnetimeTransactionId?: string;\r\n customerId?: string;\r\n recaptchaToken?: string;\r\n bin?: string; // first 6 digits of CC\r\n binName?: string; // credit card bank name\r\n }): Promise<DonationResponse> {\r\n const customFields = new DonationRequestCustomFields();\r\n // eslint-disable-next-line @typescript-eslint/camelcase\r\n customFields.fee_amount_covered = options.donationInfo.feeAmountCovered;\r\n // eslint-disable-next-line @typescript-eslint/camelcase\r\n customFields.logged_in_user = this.loggedInUser;\r\n customFields.referrer = this.referrer;\r\n customFields.origin = this.origin;\r\n\r\n // This is interesting and applies only to Venmo, but will work for other providers as well.\r\n // In Safari, `donationInfo` actually comes through as a DonationPaymentInfo object,\r\n // but in Chrome, it comes through as a plain object so you can't call `.total()` on it to\r\n // get the total amount and instead have to calculate the total\r\n const total = DonationPaymentInfo.calculateTotal(\r\n options.donationInfo.amount,\r\n options.donationInfo.coverFees,\r\n );\r\n\r\n const donationRequest = new DonationRequest({\r\n deviceData: this.deviceData,\r\n paymentProvider: options.paymentProvider,\r\n paymentMethodNonce: options.nonce,\r\n amount: total,\r\n donationType: options.donationInfo.donationType,\r\n customer: options.customerInfo,\r\n billing: options.billingInfo,\r\n customFields: customFields,\r\n upsellOnetimeTransactionId: options.upsellOnetimeTransactionId,\r\n customerId: options.customerId,\r\n recaptchaToken: options.recaptchaToken,\r\n bin: options.bin,\r\n binName: options.binName,\r\n });\r\n\r\n const jsonResponse = await this.endpointManager.submitData(donationRequest);\r\n const modeledResponse = new DonationResponse(jsonResponse);\r\n return modeledResponse;\r\n }\r\n\r\n /** @inheritdoc */\r\n async submitUpsellDonation(options: {\r\n oneTimeDonationResponse: SuccessResponse;\r\n amount: number;\r\n }): Promise<DonationResponse> {\r\n const response = options.oneTimeDonationResponse;\r\n\r\n const donationInfo = new DonationPaymentInfo({\r\n amount: options.amount,\r\n donationType: DonationType.Upsell,\r\n coverFees: false,\r\n });\r\n\r\n return this.submitDonation({\r\n nonce: response.paymentMethodNonce,\r\n paymentProvider: response.paymentProvider,\r\n customerId: response.customer_id,\r\n donationInfo: donationInfo,\r\n customerInfo: response.customer,\r\n billingInfo: response.billing,\r\n upsellOnetimeTransactionId: response.transaction_id,\r\n });\r\n }\r\n\r\n /** @inheritdoc */\r\n donationSuccessful(options: {\r\n successResponse: SuccessResponse;\r\n upsellSuccessResponse?: SuccessResponse;\r\n }): void {\r\n this.endpointManager.donationSuccessful(options);\r\n }\r\n\r\n private deviceDataCollectionStarted = false;\r\n\r\n /**\r\n * Collect Braintree device data. This is used to help fraud detection.\r\n *\r\n * @private\r\n * @returns {Promise<void>}\r\n * @memberof BraintreeManager\r\n */\r\n private async collectDeviceData(): Promise<void> {\r\n if (this.deviceDataCollectionStarted) {\r\n return;\r\n }\r\n this.deviceDataCollectionStarted = true;\r\n\r\n const instance = await this.instance.get();\r\n if (!instance) {\r\n return;\r\n }\r\n\r\n return this.paymentClients.dataCollector\r\n .get()\r\n .then((collector?: braintree.DataCollector) => {\r\n return collector?.create({ client: instance, kount: false, paypal: true });\r\n })\r\n .then(instance => {\r\n this.deviceData = instance?.deviceData;\r\n });\r\n }\r\n\r\n /**\r\n * Braintree Authorization Token\r\n *\r\n * @private\r\n * @type {string}\r\n * @memberof BraintreeManager\r\n */\r\n private authorizationToken: string;\r\n\r\n /**\r\n * The endpoint manager for network communications\r\n *\r\n * @private\r\n * @type {BraintreeEndpointManagerInterface}\r\n * @memberof BraintreeManager\r\n */\r\n private endpointManager: BraintreeEndpointManagerInterface;\r\n\r\n /**\r\n * The payment clients container containing the braintree, paypal, and google clients\r\n *\r\n * @private\r\n * @type {PaymentClientsInterface}\r\n * @memberof BraintreeManager\r\n */\r\n private paymentClients: PaymentClientsInterface;\r\n\r\n private hostingEnvironment: HostingEnvironment = HostingEnvironment.Development;\r\n\r\n constructor(options: {\r\n authorizationToken: string;\r\n paymentClients: PaymentClientsInterface;\r\n endpointManager: BraintreeEndpointManagerInterface;\r\n hostedFieldConfig: HostedFieldConfiguration;\r\n hostingEnvironment: HostingEnvironment;\r\n venmoProfileId?: string;\r\n googlePayMerchantId?: string;\r\n referrer?: string;\r\n loggedInUser?: string;\r\n origin?: string;\r\n }) {\r\n this.authorizationToken = options.authorizationToken;\r\n this.endpointManager = options.endpointManager;\r\n this.hostingEnvironment = options.hostingEnvironment;\r\n this.paymentClients = options.paymentClients;\r\n\r\n this.referrer = options.referrer;\r\n this.loggedInUser = options.loggedInUser;\r\n this.origin = options.origin;\r\n\r\n this.paymentProviders = new PaymentProviders({\r\n braintreeManager: this,\r\n paymentClients: this.paymentClients,\r\n venmoProfileId: options.venmoProfileId,\r\n googlePayMerchantId: options.googlePayMerchantId,\r\n hostingEnvironment: options.hostingEnvironment,\r\n hostedFieldConfig: options.hostedFieldConfig,\r\n });\r\n\r\n this.paymentProviders.on('hostedFieldsRetry', (retryNumber: number) => {\r\n this.emitter.emit('paymentProvidersHostedFieldsRetry', retryNumber);\r\n });\r\n\r\n this.paymentProviders.on('hostedFieldsFailed', (error: unknown) => {\r\n this.emitter.emit('paymentProvidersHostedFieldsFailed', error);\r\n });\r\n }\r\n\r\n /** @inheritdoc */\r\n setReferrer(referrer: string): void {\r\n this.referrer = referrer;\r\n }\r\n\r\n /** @inheritdoc */\r\n setLoggedInUser(loggedInUser: string): void {\r\n this.loggedInUser = loggedInUser;\r\n }\r\n\r\n /** @inheritdoc */\r\n setOrigin(origin: string): void {\r\n this.origin = origin;\r\n }\r\n}\r\n"]}
|
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
/// <reference types="googlepay" />
|
|
2
|
-
/// <reference types="grecaptcha" />
|
|
3
|
-
import { LazyLoaderServiceInterface } from '@internetarchive/lazy-loader-service';
|
|
4
|
-
import { PromisedSingleton } from '@internetarchive/promised-singleton';
|
|
5
|
-
import { HostingEnvironment } from './braintree-interfaces';
|
|
6
|
-
export interface PaymentClientsInterface {
|
|
7
|
-
braintreeClient: PromisedSingleton<braintree.Client>;
|
|
8
|
-
dataCollector: PromisedSingleton<braintree.DataCollector>;
|
|
9
|
-
hostedFields: PromisedSingleton<braintree.HostedFields>;
|
|
10
|
-
venmo: PromisedSingleton<braintree.Venmo>;
|
|
11
|
-
payPal: PromisedSingleton<braintree.PayPalCheckout>;
|
|
12
|
-
applePay: PromisedSingleton<braintree.ApplePay>;
|
|
13
|
-
googlePayBraintreeClient: PromisedSingleton<braintree.GooglePayment>;
|
|
14
|
-
googlePaymentsClient: PromisedSingleton<google.payments.api.PaymentsClient>;
|
|
15
|
-
recaptchaLibrary: PromisedSingleton<ReCaptchaV2.ReCaptcha>;
|
|
16
|
-
paypalLibrary: PromisedSingleton<any>;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* The PaymentClients class is responsible for loading and passing around
|
|
20
|
-
* all of the payment libraries. Internally it uses the LazyLoaderService to lazy load
|
|
21
|
-
* the javascript clients.
|
|
22
|
-
*
|
|
23
|
-
* For instance, it carries around the braintree and paypal libraries, as well as the specific
|
|
24
|
-
* payment-provider clients for each of the providers. This allows us to pass around typed
|
|
25
|
-
* objects instead of the untyped libraries we get from the providers.
|
|
26
|
-
*
|
|
27
|
-
* @export
|
|
28
|
-
* @class PaymentClients
|
|
29
|
-
* @implements {PaymentClientsInterface}
|
|
30
|
-
*/
|
|
31
|
-
export declare class PaymentClients implements PaymentClientsInterface {
|
|
32
|
-
braintreeClient: PromisedSingleton<import("../@types/braintree-web").Client>;
|
|
33
|
-
dataCollector: PromisedSingleton<import("../@types/braintree-web").DataCollector>;
|
|
34
|
-
hostedFields: PromisedSingleton<import("../@types/braintree-web").HostedFields>;
|
|
35
|
-
venmo: PromisedSingleton<import("../@types/braintree-web").Venmo>;
|
|
36
|
-
payPal: PromisedSingleton<import("../@types/braintree-web").PayPalCheckout>;
|
|
37
|
-
applePay: PromisedSingleton<import("../@types/braintree-web").ApplePay>;
|
|
38
|
-
googlePayBraintreeClient: PromisedSingleton<import("../@types/braintree-web").GooglePayment>;
|
|
39
|
-
googlePaymentsClient: PromisedSingleton<google.payments.api.PaymentsClient>;
|
|
40
|
-
recaptchaLibrary: PromisedSingleton<ReCaptchaV2.ReCaptcha>;
|
|
41
|
-
paypalLibrary: PromisedSingleton<any>;
|
|
42
|
-
constructor(lazyLoader: LazyLoaderServiceInterface, environment: HostingEnvironment);
|
|
43
|
-
private loadBraintreeScript;
|
|
44
|
-
private braintreeVersion;
|
|
45
|
-
private environment;
|
|
46
|
-
private lazyLoader;
|
|
47
|
-
}
|
|
1
|
+
/// <reference types="googlepay" />
|
|
2
|
+
/// <reference types="grecaptcha" />
|
|
3
|
+
import { LazyLoaderServiceInterface } from '@internetarchive/lazy-loader-service';
|
|
4
|
+
import { PromisedSingleton } from '@internetarchive/promised-singleton';
|
|
5
|
+
import { HostingEnvironment } from './braintree-interfaces';
|
|
6
|
+
export interface PaymentClientsInterface {
|
|
7
|
+
braintreeClient: PromisedSingleton<braintree.Client>;
|
|
8
|
+
dataCollector: PromisedSingleton<braintree.DataCollector>;
|
|
9
|
+
hostedFields: PromisedSingleton<braintree.HostedFields>;
|
|
10
|
+
venmo: PromisedSingleton<braintree.Venmo>;
|
|
11
|
+
payPal: PromisedSingleton<braintree.PayPalCheckout>;
|
|
12
|
+
applePay: PromisedSingleton<braintree.ApplePay>;
|
|
13
|
+
googlePayBraintreeClient: PromisedSingleton<braintree.GooglePayment>;
|
|
14
|
+
googlePaymentsClient: PromisedSingleton<google.payments.api.PaymentsClient>;
|
|
15
|
+
recaptchaLibrary: PromisedSingleton<ReCaptchaV2.ReCaptcha>;
|
|
16
|
+
paypalLibrary: PromisedSingleton<any>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* The PaymentClients class is responsible for loading and passing around
|
|
20
|
+
* all of the payment libraries. Internally it uses the LazyLoaderService to lazy load
|
|
21
|
+
* the javascript clients.
|
|
22
|
+
*
|
|
23
|
+
* For instance, it carries around the braintree and paypal libraries, as well as the specific
|
|
24
|
+
* payment-provider clients for each of the providers. This allows us to pass around typed
|
|
25
|
+
* objects instead of the untyped libraries we get from the providers.
|
|
26
|
+
*
|
|
27
|
+
* @export
|
|
28
|
+
* @class PaymentClients
|
|
29
|
+
* @implements {PaymentClientsInterface}
|
|
30
|
+
*/
|
|
31
|
+
export declare class PaymentClients implements PaymentClientsInterface {
|
|
32
|
+
braintreeClient: PromisedSingleton<import("../@types/braintree-web").Client>;
|
|
33
|
+
dataCollector: PromisedSingleton<import("../@types/braintree-web").DataCollector>;
|
|
34
|
+
hostedFields: PromisedSingleton<import("../@types/braintree-web").HostedFields>;
|
|
35
|
+
venmo: PromisedSingleton<import("../@types/braintree-web").Venmo>;
|
|
36
|
+
payPal: PromisedSingleton<import("../@types/braintree-web").PayPalCheckout>;
|
|
37
|
+
applePay: PromisedSingleton<import("../@types/braintree-web").ApplePay>;
|
|
38
|
+
googlePayBraintreeClient: PromisedSingleton<import("../@types/braintree-web").GooglePayment>;
|
|
39
|
+
googlePaymentsClient: PromisedSingleton<google.payments.api.PaymentsClient>;
|
|
40
|
+
recaptchaLibrary: PromisedSingleton<ReCaptchaV2.ReCaptcha>;
|
|
41
|
+
paypalLibrary: PromisedSingleton<any>;
|
|
42
|
+
constructor(lazyLoader: LazyLoaderServiceInterface, environment: HostingEnvironment);
|
|
43
|
+
private loadBraintreeScript;
|
|
44
|
+
private braintreeVersion;
|
|
45
|
+
private environment;
|
|
46
|
+
private lazyLoader;
|
|
47
|
+
}
|