@internetarchive/donation-form 1.0.3-alpha-webdev7960.1 → 1.0.3-webdev-8114.0
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.js.map +1 -1
- package/dist/demo/demo-analytics-handler.js.map +1 -1
- package/dist/demo/submit-form-with.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/src/braintree-manager/braintree-interfaces.js.map +1 -1
- package/dist/src/braintree-manager/braintree-manager.js.map +1 -1
- package/dist/src/braintree-manager/payment-clients.js.map +1 -1
- 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.js.map +1 -1
- 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.js.map +1 -1
- 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.js.map +1 -1
- 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.js.map +1 -1
- 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.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/google-pay-interface.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/google-pay.js.map +1 -1
- 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.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/paypal/paypal.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/venmo-interface.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/venmo.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers-interface.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers.js.map +1 -1
- package/dist/src/donation-form-controller.js +123 -123
- package/dist/src/donation-form-controller.js.map +1 -1
- package/dist/src/donation-form-error.js.map +1 -1
- package/dist/src/donation-form.js +107 -107
- package/dist/src/donation-form.js.map +1 -1
- package/dist/src/form-elements/badged-input.js +47 -47
- package/dist/src/form-elements/badged-input.js.map +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 +1 -1
- package/dist/src/form-elements/contact-form/contact-form.js +174 -179
- package/dist/src/form-elements/contact-form/contact-form.js.map +1 -1
- package/dist/src/form-elements/contact-form/countries.js.map +1 -1
- package/dist/src/form-elements/header/donation-form-header.js +14 -14
- package/dist/src/form-elements/header/donation-form-header.js.map +1 -1
- package/dist/src/form-elements/header/donation-summary.js +15 -15
- package/dist/src/form-elements/header/donation-summary.js.map +1 -1
- package/dist/src/form-elements/payment-selector.js +164 -164
- package/dist/src/form-elements/payment-selector.js.map +1 -1
- package/dist/src/form-elements/total-amount.js +16 -16
- package/dist/src/form-elements/total-amount.js.map +1 -1
- package/dist/src/modals/confirm-donation-modal-content.js +51 -51
- package/dist/src/modals/confirm-donation-modal-content.js.map +1 -1
- package/dist/src/modals/error-modal-content.js +22 -22
- package/dist/src/modals/error-modal-content.js.map +1 -1
- package/dist/src/modals/upsell-modal-content.js +182 -182
- package/dist/src/modals/upsell-modal-content.js.map +1 -1
- package/dist/src/payment-flow-handlers/donation-flow-modal-manager.js +20 -20
- package/dist/src/payment-flow-handlers/donation-flow-modal-manager.js.map +1 -1
- package/dist/src/payment-flow-handlers/handlers/applepay-flow-handler.js.map +1 -1
- package/dist/src/payment-flow-handlers/handlers/creditcard-flow-handler.js.map +1 -1
- package/dist/src/payment-flow-handlers/handlers/googlepay-flow-handler.js.map +1 -1
- package/dist/src/payment-flow-handlers/handlers/paypal-flow-handler.js.map +1 -1
- 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.js.map +1 -1
- package/dist/src/payment-flow-handlers/payment-flow-handlers.js.map +1 -1
- package/dist/src/recaptcha-manager/recaptcha-manager.js.map +1 -1
- package/dist/src/util/promisedSleep.js.map +1 -1
- package/dist/test/helpers/fillInContactForm.js.map +1 -1
- 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.js.map +1 -1
- 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.js.map +1 -1
- 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.js.map +1 -1
- package/dist/test/mocks/mock-braintree-manager.js.map +1 -1
- package/dist/test/mocks/mock-donation-info.js.map +1 -1
- package/dist/test/mocks/mock-endpoint-manager.js.map +1 -1
- package/dist/test/mocks/mock-hosted-fields-config.js.map +1 -1
- package/dist/test/mocks/mock-hosted-fields-container.js.map +1 -1
- package/dist/test/mocks/mock-lazy-loader.js.map +1 -1
- package/dist/test/mocks/mock-modal-manager.js.map +1 -1
- package/dist/test/mocks/mock-payment-clients.js.map +1 -1
- package/dist/test/mocks/mock-paypal-button-renderer.js.map +1 -1
- package/dist/test/mocks/mock-recaptcha-manager.js.map +1 -1
- package/dist/test/mocks/models/mock-billing-info.js.map +1 -1
- package/dist/test/mocks/models/mock-custom-fields.js.map +1 -1
- package/dist/test/mocks/models/mock-customer-info.js.map +1 -1
- package/dist/test/mocks/models/mock-donation-request.js.map +1 -1
- package/dist/test/mocks/models/mock-success-response.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-applepay-client.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-applepay-payment.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-applepay-paymentauthorizedevent.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-applepay-session.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-applepay-sessionmanager.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-applepay-validatemerchantevent.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-braintree-client.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-data-collector.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-googlepay-client.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-googlepay-library.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-grecaptcha.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-hostedfields-client.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-hostedfieldstateobject-generator.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-hostedfieldtokenizepayload.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-paypal-client.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-paypal-library.js.map +1 -1
- 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.js.map +1 -1
- 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.js.map +1 -1
- 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.js.map +1 -1
- 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.js.map +1 -1
- package/dist/test/mocks/payment-providers/individual-providers/mock-venmo-handler.js.map +1 -1
- package/dist/test/mocks/payment-providers/mock-payment-providers.js.map +1 -1
- package/dist/test/tests/braintree-manager.test.js.map +1 -1
- package/dist/test/tests/donation-form-controller.test.js +39 -39
- package/dist/test/tests/donation-form-controller.test.js.map +1 -1
- package/dist/test/tests/donation-form.test.js +4 -4
- package/dist/test/tests/donation-form.test.js.map +1 -1
- package/dist/test/tests/flow-handlers/donation-flow-modal-manager.test.js +14 -14
- package/dist/test/tests/flow-handlers/donation-flow-modal-manager.test.js.map +1 -1
- package/dist/test/tests/form-elements/contact-form.test.d.ts +1 -0
- package/dist/test/tests/form-elements/contact-form.test.js +132 -0
- package/dist/test/tests/form-elements/contact-form.test.js.map +1 -0
- package/dist/test/tests/form-elements/donation-summary.test.js.map +1 -1
- package/dist/test/tests/form-elements/payment-selector.test.js.map +1 -1
- package/dist/test/tests/modals/error-modal-content.test.js +2 -2
- package/dist/test/tests/modals/error-modal-content.test.js.map +1 -1
- package/dist/test/tests/modals/upsell-modal-content.test.js +31 -31
- package/dist/test/tests/modals/upsell-modal-content.test.js.map +1 -1
- package/dist/test/tests/models/donation-payment-info.test.js.map +1 -1
- package/dist/test/tests/payment-clients.test.js.map +1 -1
- package/dist/test/tests/payment-providers/applepay-sessiondatasource.test.js.map +1 -1
- package/dist/test/tests/payment-providers/applepay-sessionmanager.test.js.map +1 -1
- package/dist/test/tests/payment-providers/applepay.test.js.map +1 -1
- package/dist/test/tests/payment-providers/creditcard.test.js.map +1 -1
- package/dist/test/tests/payment-providers/googlepay.test.js.map +1 -1
- package/dist/test/tests/payment-providers/payment-providers.test.js.map +1 -1
- package/dist/test/tests/payment-providers/paypal-button-datasource.test.js.map +1 -1
- package/dist/test/tests/payment-providers/paypal.test.js.map +1 -1
- package/dist/test/tests/payment-providers/venmo.test.js.map +1 -1
- package/dist/test/tests/recaptcha-manager.test.js.map +1 -1
- package/package.json +107 -107
- 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 +281 -281
- package/src/braintree-manager/payment-clients.ts +146 -146
- 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 +97 -97
- 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 +623 -623
- package/src/donation-form-error.ts +6 -6
- package/src/donation-form.ts +576 -576
- package/src/form-elements/badged-input.ts +109 -109
- package/src/form-elements/contact-form/autocomplete-field-options.ts +63 -63
- package/src/form-elements/contact-form/contact-form.ts +432 -434
- package/src/form-elements/contact-form/countries.ts +252 -252
- package/src/form-elements/header/donation-form-header.ts +98 -98
- package/src/form-elements/header/donation-summary.ts +61 -61
- package/src/form-elements/payment-selector.ts +365 -365
- package/src/form-elements/total-amount.ts +46 -46
- package/src/modals/confirm-donation-modal-content.ts +168 -168
- package/src/modals/error-modal-content.ts +48 -48
- package/src/modals/upsell-modal-content.ts +284 -284
- package/src/payment-flow-handlers/donation-flow-modal-manager.ts +439 -439
- package/src/payment-flow-handlers/handlers/applepay-flow-handler.ts +109 -109
- package/src/payment-flow-handlers/handlers/creditcard-flow-handler.ts +232 -232
- package/src/payment-flow-handlers/handlers/googlepay-flow-handler.ts +111 -111
- package/src/payment-flow-handlers/handlers/paypal-flow-handler.ts +331 -331
- package/src/payment-flow-handlers/handlers/venmo-flow-handler.ts +119 -119
- 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
|
@@ -1,172 +1,172 @@
|
|
|
1
|
-
import {
|
|
2
|
-
DonationRequest,
|
|
3
|
-
DonationResponse,
|
|
4
|
-
SuccessResponse,
|
|
5
|
-
PaymentProvider,
|
|
6
|
-
DonationPaymentInfo,
|
|
7
|
-
CustomerInfo,
|
|
8
|
-
BillingInfo,
|
|
9
|
-
} from '@internetarchive/donation-form-data-models';
|
|
10
|
-
import { PromisedSingleton } from '@internetarchive/promised-singleton';
|
|
11
|
-
import { Unsubscribe } from 'nanoevents';
|
|
12
|
-
import { PaymentProvidersInterface } from './payment-providers-interface';
|
|
13
|
-
|
|
14
|
-
export interface BraintreeManagerEvents {
|
|
15
|
-
paymentProvidersHostedFieldsRetry: (retryNumber: number) => void;
|
|
16
|
-
paymentProvidersHostedFieldsFailed: (error: unknown) => void;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* The BraintreeManager is the main entrypoint for much of the common braintree functionality.
|
|
21
|
-
*
|
|
22
|
-
* A single instance of it gets created and passed down through all of the components.
|
|
23
|
-
*
|
|
24
|
-
* @export
|
|
25
|
-
* @interface BraintreeManagerInterface
|
|
26
|
-
*/
|
|
27
|
-
export interface BraintreeManagerInterface {
|
|
28
|
-
on<E extends keyof BraintreeManagerEvents>(
|
|
29
|
-
event: E,
|
|
30
|
-
callback: BraintreeManagerEvents[E],
|
|
31
|
-
): Unsubscribe;
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* The PaymentProviders class contains the IA-specific handlers for each of the
|
|
35
|
-
* different payment providers.
|
|
36
|
-
*
|
|
37
|
-
* They are generally data-focused, as opposed to UI-focused, but there
|
|
38
|
-
* is some cross-polination between PaymentProviders and FlowHandlers.
|
|
39
|
-
*
|
|
40
|
-
* @type {PaymentProvidersInterface}
|
|
41
|
-
* @memberof BraintreeManagerInterface
|
|
42
|
-
*/
|
|
43
|
-
paymentProviders: PaymentProvidersInterface;
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* The Braintree Client instance.
|
|
47
|
-
*
|
|
48
|
-
* This gets used to isntantiate clients for all of the payment providers.
|
|
49
|
-
*
|
|
50
|
-
* @type {PromisedSingleton<braintree.Client>}
|
|
51
|
-
* @memberof BraintreeManagerInterface
|
|
52
|
-
*/
|
|
53
|
-
instance: PromisedSingleton<braintree.Client>;
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Set the referrer for later submission
|
|
57
|
-
*
|
|
58
|
-
* @param {string} referrer
|
|
59
|
-
* @memberof BraintreeManagerInterface
|
|
60
|
-
*/
|
|
61
|
-
setReferrer(referrer: string): void;
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Set the origin for later submission
|
|
65
|
-
*
|
|
66
|
-
* @param {string} origin
|
|
67
|
-
* @memberof BraintreeManagerInterface
|
|
68
|
-
*/
|
|
69
|
-
setOrigin(origin: string): void;
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Set the logged-in user for later submission
|
|
73
|
-
*
|
|
74
|
-
* @param {string} loggedInUser
|
|
75
|
-
* @memberof BraintreeManagerInterface
|
|
76
|
-
*/
|
|
77
|
-
setLoggedInUser(loggedInUser: string): void;
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Perform startup tasts like session resuming
|
|
81
|
-
*
|
|
82
|
-
* @memberof BraintreeManagerInterface
|
|
83
|
-
*/
|
|
84
|
-
startup(): void;
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Submit donation to the backend
|
|
88
|
-
*
|
|
89
|
-
* @param {{
|
|
90
|
-
* nonce: string;
|
|
91
|
-
* paymentProvider: PaymentProvider;
|
|
92
|
-
* donationInfo: DonationPaymentInfo;
|
|
93
|
-
* billingInfo: BillingInfo;
|
|
94
|
-
* customerInfo: CustomerInfo;
|
|
95
|
-
* upsellOnetimeTransactionId?: string;
|
|
96
|
-
* customerId?: string;
|
|
97
|
-
* recaptchaToken?: string;
|
|
98
|
-
* bin?: string; // first 6 digits of CC
|
|
99
|
-
* binName?: string; // credit card bank name
|
|
100
|
-
* }} options
|
|
101
|
-
* @returns {Promise<DonationResponse>}
|
|
102
|
-
* @memberof BraintreeManagerInterface
|
|
103
|
-
*/
|
|
104
|
-
submitDonation(options: {
|
|
105
|
-
nonce: string;
|
|
106
|
-
paymentProvider: PaymentProvider;
|
|
107
|
-
donationInfo: DonationPaymentInfo;
|
|
108
|
-
billingInfo: BillingInfo;
|
|
109
|
-
customerInfo: CustomerInfo;
|
|
110
|
-
upsellOnetimeTransactionId?: string;
|
|
111
|
-
customerId?: string;
|
|
112
|
-
recaptchaToken?: string;
|
|
113
|
-
bin?: string; // first 6 digits of CC
|
|
114
|
-
binName?: string; // credit card bank name
|
|
115
|
-
}): Promise<DonationResponse>;
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* Submit the upsell donation
|
|
119
|
-
*
|
|
120
|
-
* @param {{
|
|
121
|
-
* oneTimeDonationResponse: SuccessResponse;
|
|
122
|
-
* amount: number;
|
|
123
|
-
* }} options
|
|
124
|
-
* @returns {Promise<DonationResponse>}
|
|
125
|
-
* @memberof BraintreeManagerInterface
|
|
126
|
-
*/
|
|
127
|
-
submitUpsellDonation(options: {
|
|
128
|
-
oneTimeDonationResponse: SuccessResponse;
|
|
129
|
-
amount: number;
|
|
130
|
-
}): Promise<DonationResponse>;
|
|
131
|
-
|
|
132
|
-
/**
|
|
133
|
-
* Finish the donation after a successful completion.
|
|
134
|
-
*
|
|
135
|
-
* @param {{
|
|
136
|
-
* successResponse: SuccessResponse;
|
|
137
|
-
* upsellSuccessResponse?: SuccessResponse;
|
|
138
|
-
* }} options
|
|
139
|
-
* @memberof BraintreeManagerInterface
|
|
140
|
-
*/
|
|
141
|
-
donationSuccessful(options: {
|
|
142
|
-
successResponse: SuccessResponse;
|
|
143
|
-
upsellSuccessResponse?: SuccessResponse;
|
|
144
|
-
}): void;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
export interface BraintreeEndpointManagerInterface {
|
|
148
|
-
/**
|
|
149
|
-
* Responsible for submitting a data object to the backend
|
|
150
|
-
* and returning a Promise of the JSON object response.
|
|
151
|
-
*
|
|
152
|
-
* @param {object} data
|
|
153
|
-
* @returns {Promise<object>}
|
|
154
|
-
* @memberof BraintreeEndpointManagerInterface
|
|
155
|
-
*/
|
|
156
|
-
submitData(request: DonationRequest): Promise<DonationResponse>;
|
|
157
|
-
|
|
158
|
-
/**
|
|
159
|
-
* Once the user is finished with the donation flow, either after
|
|
160
|
-
* a monthly donation or an upsell, we notify the endpoint manager
|
|
161
|
-
* so it can redirect the user to the thank you page.
|
|
162
|
-
*/
|
|
163
|
-
donationSuccessful(options: {
|
|
164
|
-
successResponse: SuccessResponse;
|
|
165
|
-
upsellSuccessResponse?: SuccessResponse;
|
|
166
|
-
}): void;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
export enum HostingEnvironment {
|
|
170
|
-
Development = 'dev',
|
|
171
|
-
Production = 'prod',
|
|
172
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
DonationRequest,
|
|
3
|
+
DonationResponse,
|
|
4
|
+
SuccessResponse,
|
|
5
|
+
PaymentProvider,
|
|
6
|
+
DonationPaymentInfo,
|
|
7
|
+
CustomerInfo,
|
|
8
|
+
BillingInfo,
|
|
9
|
+
} from '@internetarchive/donation-form-data-models';
|
|
10
|
+
import { PromisedSingleton } from '@internetarchive/promised-singleton';
|
|
11
|
+
import { Unsubscribe } from 'nanoevents';
|
|
12
|
+
import { PaymentProvidersInterface } from './payment-providers-interface';
|
|
13
|
+
|
|
14
|
+
export interface BraintreeManagerEvents {
|
|
15
|
+
paymentProvidersHostedFieldsRetry: (retryNumber: number) => void;
|
|
16
|
+
paymentProvidersHostedFieldsFailed: (error: unknown) => void;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The BraintreeManager is the main entrypoint for much of the common braintree functionality.
|
|
21
|
+
*
|
|
22
|
+
* A single instance of it gets created and passed down through all of the components.
|
|
23
|
+
*
|
|
24
|
+
* @export
|
|
25
|
+
* @interface BraintreeManagerInterface
|
|
26
|
+
*/
|
|
27
|
+
export interface BraintreeManagerInterface {
|
|
28
|
+
on<E extends keyof BraintreeManagerEvents>(
|
|
29
|
+
event: E,
|
|
30
|
+
callback: BraintreeManagerEvents[E],
|
|
31
|
+
): Unsubscribe;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* The PaymentProviders class contains the IA-specific handlers for each of the
|
|
35
|
+
* different payment providers.
|
|
36
|
+
*
|
|
37
|
+
* They are generally data-focused, as opposed to UI-focused, but there
|
|
38
|
+
* is some cross-polination between PaymentProviders and FlowHandlers.
|
|
39
|
+
*
|
|
40
|
+
* @type {PaymentProvidersInterface}
|
|
41
|
+
* @memberof BraintreeManagerInterface
|
|
42
|
+
*/
|
|
43
|
+
paymentProviders: PaymentProvidersInterface;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* The Braintree Client instance.
|
|
47
|
+
*
|
|
48
|
+
* This gets used to isntantiate clients for all of the payment providers.
|
|
49
|
+
*
|
|
50
|
+
* @type {PromisedSingleton<braintree.Client>}
|
|
51
|
+
* @memberof BraintreeManagerInterface
|
|
52
|
+
*/
|
|
53
|
+
instance: PromisedSingleton<braintree.Client>;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Set the referrer for later submission
|
|
57
|
+
*
|
|
58
|
+
* @param {string} referrer
|
|
59
|
+
* @memberof BraintreeManagerInterface
|
|
60
|
+
*/
|
|
61
|
+
setReferrer(referrer: string): void;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Set the origin for later submission
|
|
65
|
+
*
|
|
66
|
+
* @param {string} origin
|
|
67
|
+
* @memberof BraintreeManagerInterface
|
|
68
|
+
*/
|
|
69
|
+
setOrigin(origin: string): void;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Set the logged-in user for later submission
|
|
73
|
+
*
|
|
74
|
+
* @param {string} loggedInUser
|
|
75
|
+
* @memberof BraintreeManagerInterface
|
|
76
|
+
*/
|
|
77
|
+
setLoggedInUser(loggedInUser: string): void;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Perform startup tasts like session resuming
|
|
81
|
+
*
|
|
82
|
+
* @memberof BraintreeManagerInterface
|
|
83
|
+
*/
|
|
84
|
+
startup(): void;
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Submit donation to the backend
|
|
88
|
+
*
|
|
89
|
+
* @param {{
|
|
90
|
+
* nonce: string;
|
|
91
|
+
* paymentProvider: PaymentProvider;
|
|
92
|
+
* donationInfo: DonationPaymentInfo;
|
|
93
|
+
* billingInfo: BillingInfo;
|
|
94
|
+
* customerInfo: CustomerInfo;
|
|
95
|
+
* upsellOnetimeTransactionId?: string;
|
|
96
|
+
* customerId?: string;
|
|
97
|
+
* recaptchaToken?: string;
|
|
98
|
+
* bin?: string; // first 6 digits of CC
|
|
99
|
+
* binName?: string; // credit card bank name
|
|
100
|
+
* }} options
|
|
101
|
+
* @returns {Promise<DonationResponse>}
|
|
102
|
+
* @memberof BraintreeManagerInterface
|
|
103
|
+
*/
|
|
104
|
+
submitDonation(options: {
|
|
105
|
+
nonce: string;
|
|
106
|
+
paymentProvider: PaymentProvider;
|
|
107
|
+
donationInfo: DonationPaymentInfo;
|
|
108
|
+
billingInfo: BillingInfo;
|
|
109
|
+
customerInfo: CustomerInfo;
|
|
110
|
+
upsellOnetimeTransactionId?: string;
|
|
111
|
+
customerId?: string;
|
|
112
|
+
recaptchaToken?: string;
|
|
113
|
+
bin?: string; // first 6 digits of CC
|
|
114
|
+
binName?: string; // credit card bank name
|
|
115
|
+
}): Promise<DonationResponse>;
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Submit the upsell donation
|
|
119
|
+
*
|
|
120
|
+
* @param {{
|
|
121
|
+
* oneTimeDonationResponse: SuccessResponse;
|
|
122
|
+
* amount: number;
|
|
123
|
+
* }} options
|
|
124
|
+
* @returns {Promise<DonationResponse>}
|
|
125
|
+
* @memberof BraintreeManagerInterface
|
|
126
|
+
*/
|
|
127
|
+
submitUpsellDonation(options: {
|
|
128
|
+
oneTimeDonationResponse: SuccessResponse;
|
|
129
|
+
amount: number;
|
|
130
|
+
}): Promise<DonationResponse>;
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Finish the donation after a successful completion.
|
|
134
|
+
*
|
|
135
|
+
* @param {{
|
|
136
|
+
* successResponse: SuccessResponse;
|
|
137
|
+
* upsellSuccessResponse?: SuccessResponse;
|
|
138
|
+
* }} options
|
|
139
|
+
* @memberof BraintreeManagerInterface
|
|
140
|
+
*/
|
|
141
|
+
donationSuccessful(options: {
|
|
142
|
+
successResponse: SuccessResponse;
|
|
143
|
+
upsellSuccessResponse?: SuccessResponse;
|
|
144
|
+
}): void;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
export interface BraintreeEndpointManagerInterface {
|
|
148
|
+
/**
|
|
149
|
+
* Responsible for submitting a data object to the backend
|
|
150
|
+
* and returning a Promise of the JSON object response.
|
|
151
|
+
*
|
|
152
|
+
* @param {object} data
|
|
153
|
+
* @returns {Promise<object>}
|
|
154
|
+
* @memberof BraintreeEndpointManagerInterface
|
|
155
|
+
*/
|
|
156
|
+
submitData(request: DonationRequest): Promise<DonationResponse>;
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Once the user is finished with the donation flow, either after
|
|
160
|
+
* a monthly donation or an upsell, we notify the endpoint manager
|
|
161
|
+
* so it can redirect the user to the thank you page.
|
|
162
|
+
*/
|
|
163
|
+
donationSuccessful(options: {
|
|
164
|
+
successResponse: SuccessResponse;
|
|
165
|
+
upsellSuccessResponse?: SuccessResponse;
|
|
166
|
+
}): void;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
export enum HostingEnvironment {
|
|
170
|
+
Development = 'dev',
|
|
171
|
+
Production = 'prod',
|
|
172
|
+
}
|