@internetarchive/donation-form 0.5.8-alpha.3 → 0.5.9-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/dist/src/braintree-manager/braintree-interfaces.d.ts +6 -0
  2. package/dist/src/braintree-manager/braintree-interfaces.js.map +1 -1
  3. package/dist/src/braintree-manager/braintree-manager.d.ts +4 -1
  4. package/dist/src/braintree-manager/braintree-manager.js +11 -0
  5. package/dist/src/braintree-manager/braintree-manager.js.map +1 -1
  6. package/dist/src/braintree-manager/payment-providers/credit-card/credit-card-interface.d.ts +6 -0
  7. package/dist/src/braintree-manager/payment-providers/credit-card/credit-card-interface.js.map +1 -1
  8. package/dist/src/braintree-manager/payment-providers/credit-card/credit-card.d.ts +12 -2
  9. package/dist/src/braintree-manager/payment-providers/credit-card/credit-card.js +60 -8
  10. package/dist/src/braintree-manager/payment-providers/credit-card/credit-card.js.map +1 -1
  11. package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-container.d.ts +18 -5
  12. package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-container.js +15 -0
  13. package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-container.js.map +1 -1
  14. package/dist/src/braintree-manager/payment-providers-interface.d.ts +4 -1
  15. package/dist/src/braintree-manager/payment-providers-interface.js.map +1 -1
  16. package/dist/src/braintree-manager/payment-providers.d.ts +4 -1
  17. package/dist/src/braintree-manager/payment-providers.js +13 -1
  18. package/dist/src/braintree-manager/payment-providers.js.map +1 -1
  19. package/dist/src/donation-form-controller.js +12 -0
  20. package/dist/src/donation-form-controller.js.map +1 -1
  21. package/dist/src/util/promisedSleep.d.ts +1 -0
  22. package/dist/src/util/promisedSleep.js +4 -0
  23. package/dist/src/util/promisedSleep.js.map +1 -0
  24. package/dist/test/mocks/mock-braintree-manager.d.ts +4 -1
  25. package/dist/test/mocks/mock-braintree-manager.js +5 -0
  26. package/dist/test/mocks/mock-braintree-manager.js.map +1 -1
  27. package/dist/test/mocks/mock-hosted-fields-container.d.ts +2 -0
  28. package/dist/test/mocks/mock-hosted-fields-container.js +6 -0
  29. package/dist/test/mocks/mock-hosted-fields-container.js.map +1 -1
  30. package/dist/test/mocks/mock-lazy-loader.js +0 -13
  31. package/dist/test/mocks/mock-lazy-loader.js.map +1 -1
  32. package/dist/test/mocks/payment-providers/individual-providers/mock-creditcard-handler.d.ts +4 -1
  33. package/dist/test/mocks/payment-providers/individual-providers/mock-creditcard-handler.js +5 -0
  34. package/dist/test/mocks/payment-providers/individual-providers/mock-creditcard-handler.js.map +1 -1
  35. package/dist/test/mocks/payment-providers/mock-payment-providers.d.ts +4 -1
  36. package/dist/test/mocks/payment-providers/mock-payment-providers.js +5 -0
  37. package/dist/test/mocks/payment-providers/mock-payment-providers.js.map +1 -1
  38. package/dist/test/tests/donation-form-controller.test.js +1 -1
  39. package/dist/test/tests/donation-form-controller.test.js.map +1 -1
  40. package/dist/test/tests/donation-form.test.js +1 -1
  41. package/dist/test/tests/donation-form.test.js.map +1 -1
  42. package/dist/test/tests/form-elements/payment-selector.test.js +1 -1
  43. package/dist/test/tests/form-elements/payment-selector.test.js.map +1 -1
  44. package/dist/test/tests/payment-providers/creditcard.test.js +101 -0
  45. package/dist/test/tests/payment-providers/creditcard.test.js.map +1 -1
  46. package/package.json +3 -2
  47. package/src/braintree-manager/braintree-interfaces.ts +11 -0
  48. package/src/braintree-manager/braintree-manager.ts +19 -0
  49. package/src/braintree-manager/payment-providers/credit-card/credit-card-interface.ts +10 -0
  50. package/src/braintree-manager/payment-providers/credit-card/credit-card.ts +79 -12
  51. package/src/braintree-manager/payment-providers/credit-card/hosted-field-container.ts +35 -8
  52. package/src/braintree-manager/payment-providers-interface.ts +12 -1
  53. package/src/braintree-manager/payment-providers.ts +22 -2
  54. package/src/donation-form-controller.ts +17 -3
  55. package/src/util/promisedSleep.ts +3 -0
@@ -9,12 +9,13 @@ import { PaymentClientsInterface } from './payment-clients';
9
9
  import { GooglePayHandler } from './payment-providers/google-pay';
10
10
  import { BraintreeManagerInterface, HostingEnvironment } from './braintree-interfaces';
11
11
  import { HostedFieldConfiguration } from './payment-providers/credit-card/hosted-field-configuration';
12
- import { PaymentProvidersInterface } from './payment-providers-interface';
12
+ import { PaymentProvidersEvents, PaymentProvidersInterface } from './payment-providers-interface';
13
13
  import { ApplePayHandlerInterface } from './payment-providers/apple-pay/apple-pay-interface';
14
14
  import { CreditCardHandlerInterface } from './payment-providers/credit-card/credit-card-interface';
15
15
  import { VenmoHandlerInterface } from './payment-providers/venmo-interface';
16
16
  import { PayPalHandlerInterface } from './payment-providers/paypal/paypal-interface';
17
17
  import { GooglePayHandlerInterface } from './payment-providers/google-pay-interface';
18
+ import { createNanoEvents, Emitter, Unsubscribe } from 'nanoevents';
18
19
 
19
20
  /**
20
21
  * The PaymentProviders class contains the IA-specific handlers for each of the
@@ -28,14 +29,31 @@ import { GooglePayHandlerInterface } from './payment-providers/google-pay-interf
28
29
  * @implements {PaymentProvidersInterface}
29
30
  */
30
31
  export class PaymentProviders implements PaymentProvidersInterface {
32
+ on<E extends keyof PaymentProvidersEvents>(
33
+ event: E,
34
+ callback: PaymentProvidersEvents[E],
35
+ ): Unsubscribe {
36
+ return this.emitter.on(event, callback);
37
+ }
38
+
31
39
  creditCardHandler = new PromisedSingleton<CreditCardHandlerInterface>({
32
40
  generator: async (): Promise<CreditCardHandlerInterface> => {
33
41
  const client = await this.paymentClients.hostedFields.get();
34
- return new CreditCardHandler({
42
+ const handler = new CreditCardHandler({
35
43
  braintreeManager: this.braintreeManager,
36
44
  hostedFieldClient: client,
37
45
  hostedFieldConfig: this.hostedFieldConfig,
38
46
  });
47
+
48
+ handler.on('hostedFieldsRetry', (retryNumber: number) => {
49
+ this.emitter.emit('hostedFieldsRetry', retryNumber);
50
+ });
51
+
52
+ handler.on('hostedFieldsFailed', (error: unknown) => {
53
+ this.emitter.emit('hostedFieldsFailed', error);
54
+ });
55
+
56
+ return handler;
39
57
  },
40
58
  });
41
59
 
@@ -109,6 +127,8 @@ export class PaymentProviders implements PaymentProvidersInterface {
109
127
 
110
128
  private paymentClients: PaymentClientsInterface;
111
129
 
130
+ private emitter = createNanoEvents<PaymentProvidersEvents>();
131
+
112
132
  constructor(options: {
113
133
  braintreeManager: BraintreeManagerInterface;
114
134
  paymentClients: PaymentClientsInterface;
@@ -109,11 +109,11 @@ export class DonationFormController extends LitElement {
109
109
 
110
110
  @query('donation-form') private donationForm!: DonationForm;
111
111
 
112
- @query('#braintree-creditcard') private braintreeNumberInput!: HTMLInputElement;
112
+ @query('#braintree-creditcard') private braintreeNumberInput!: HTMLDivElement;
113
113
 
114
- @query('#braintree-cvv') private braintreeCVVInput!: HTMLInputElement;
114
+ @query('#braintree-cvv') private braintreeCVVInput!: HTMLDivElement;
115
115
 
116
- @query('#braintree-expiration') private braintreeExpirationDateInput!: HTMLInputElement;
116
+ @query('#braintree-expiration') private braintreeExpirationDateInput!: HTMLDivElement;
117
117
 
118
118
  @query('#braintree-error-message') private braintreeErrorMessage!: HTMLDivElement;
119
119
 
@@ -195,6 +195,20 @@ export class DonationFormController extends LitElement {
195
195
  loggedInUser: this.loggedInUser,
196
196
  origin: this.origin,
197
197
  });
198
+
199
+ this.braintreeManager.on('paymentProvidersHostedFieldsRetry', (retryNumber: number) => {
200
+ const event = new CustomEvent('paymentProvidersHostedFieldsRetry', {
201
+ detail: { retryNumber },
202
+ });
203
+ this.dispatchEvent(event);
204
+ });
205
+
206
+ this.braintreeManager.on('paymentProvidersHostedFieldsFailed', (error: unknown) => {
207
+ const event = new CustomEvent('paymentProvidersHostedFieldsFailed', {
208
+ detail: { error },
209
+ });
210
+ this.dispatchEvent(event);
211
+ });
198
212
  }
199
213
  }
200
214
 
@@ -0,0 +1,3 @@
1
+ export function promisedSleep(ms: number): Promise<void> {
2
+ return new Promise(resolve => setTimeout(resolve, ms));
3
+ }