@internetarchive/donation-form 0.6.2 → 0.6.3-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 (109) hide show
  1. package/dist/demo/braintree-endpoint-manager.js.map +1 -1
  2. package/dist/demo/submit-form-with.js.map +1 -1
  3. package/dist/src/braintree-manager/braintree-manager.js.map +1 -1
  4. package/dist/src/braintree-manager/payment-clients.d.ts +0 -2
  5. package/dist/src/braintree-manager/payment-clients.js +0 -1
  6. package/dist/src/braintree-manager/payment-clients.js.map +1 -1
  7. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-interface.d.ts +0 -1
  8. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource.d.ts +0 -1
  9. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource.js +2 -2
  10. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource.js.map +1 -1
  11. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-manager.d.ts +0 -1
  12. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay.js +0 -1
  13. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay.js.map +1 -1
  14. package/dist/src/braintree-manager/payment-providers/credit-card/credit-card.js +2 -2
  15. package/dist/src/braintree-manager/payment-providers/credit-card/credit-card.js.map +1 -1
  16. package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-container.js.map +1 -1
  17. package/dist/src/braintree-manager/payment-providers/google-pay-interface.d.ts +0 -1
  18. package/dist/src/braintree-manager/payment-providers/google-pay.d.ts +0 -1
  19. package/dist/src/braintree-manager/payment-providers/paypal/paypal-button-datasource.js +3 -3
  20. package/dist/src/braintree-manager/payment-providers/paypal/paypal-button-datasource.js.map +1 -1
  21. package/dist/src/braintree-manager/payment-providers/paypal/paypal.js.map +1 -1
  22. package/dist/src/braintree-manager/payment-providers/venmo.js +1 -1
  23. package/dist/src/braintree-manager/payment-providers/venmo.js.map +1 -1
  24. package/dist/src/braintree-manager/payment-providers.js.map +1 -1
  25. package/dist/src/donation-form-controller.js +0 -1
  26. package/dist/src/donation-form-controller.js.map +1 -1
  27. package/dist/src/donation-form.js +18 -15
  28. package/dist/src/donation-form.js.map +1 -1
  29. package/dist/src/form-elements/badged-input.js.map +1 -1
  30. package/dist/src/form-elements/contact-form/contact-form.js.map +1 -1
  31. package/dist/src/form-elements/header/donation-form-header.js.map +1 -1
  32. package/dist/src/form-elements/header/donation-summary.js.map +1 -1
  33. package/dist/src/form-elements/payment-selector.js +1 -1
  34. package/dist/src/form-elements/payment-selector.js.map +1 -1
  35. package/dist/src/form-elements/total-amount.js.map +1 -1
  36. package/dist/src/modals/confirm-donation-modal-content.js +0 -2
  37. package/dist/src/modals/confirm-donation-modal-content.js.map +1 -1
  38. package/dist/src/modals/error-modal-content.js.map +1 -1
  39. package/dist/src/modals/upsell-modal-content.js.map +1 -1
  40. package/dist/src/payment-flow-handlers/donation-flow-modal-manager.js +0 -1
  41. package/dist/src/payment-flow-handlers/donation-flow-modal-manager.js.map +1 -1
  42. package/dist/src/payment-flow-handlers/handlers/applepay-flow-handler.js +1 -1
  43. package/dist/src/payment-flow-handlers/handlers/applepay-flow-handler.js.map +1 -1
  44. package/dist/src/payment-flow-handlers/handlers/creditcard-flow-handler.js +1 -1
  45. package/dist/src/payment-flow-handlers/handlers/creditcard-flow-handler.js.map +1 -1
  46. package/dist/src/payment-flow-handlers/handlers/googlepay-flow-handler.js +1 -1
  47. package/dist/src/payment-flow-handlers/handlers/googlepay-flow-handler.js.map +1 -1
  48. package/dist/src/payment-flow-handlers/handlers/paypal-flow-handler.js +6 -14
  49. package/dist/src/payment-flow-handlers/handlers/paypal-flow-handler.js.map +1 -1
  50. package/dist/src/payment-flow-handlers/handlers/venmo-flow-handler.js.map +1 -1
  51. package/dist/src/payment-flow-handlers/handlers/venmo-restoration-state-handler.js +1 -1
  52. package/dist/src/payment-flow-handlers/handlers/venmo-restoration-state-handler.js.map +1 -1
  53. package/dist/src/payment-flow-handlers/payment-flow-handlers.js +1 -1
  54. package/dist/src/payment-flow-handlers/payment-flow-handlers.js.map +1 -1
  55. package/dist/src/recaptcha-manager/recaptcha-manager.d.ts +0 -1
  56. package/dist/src/recaptcha-manager/recaptcha-manager.js.map +1 -1
  57. package/dist/test/mocks/flow-handlers/individual-handlers/mock-creditcard-flow-handler.js +0 -1
  58. package/dist/test/mocks/flow-handlers/individual-handlers/mock-creditcard-flow-handler.js.map +1 -1
  59. package/dist/test/mocks/flow-handlers/mock-payment-flow-handlers.js +1 -1
  60. package/dist/test/mocks/flow-handlers/mock-payment-flow-handlers.js.map +1 -1
  61. package/dist/test/mocks/mock-braintree-manager.js.map +1 -1
  62. package/dist/test/mocks/mock-lazy-loader.js.map +1 -1
  63. package/dist/test/mocks/mock-modal-manager.js +0 -1
  64. package/dist/test/mocks/mock-modal-manager.js.map +1 -1
  65. package/dist/test/mocks/mock-payment-clients.d.ts +0 -2
  66. package/dist/test/mocks/mock-payment-clients.js +0 -1
  67. package/dist/test/mocks/mock-payment-clients.js.map +1 -1
  68. package/dist/test/mocks/mock-recaptcha-manager.d.ts +0 -1
  69. package/dist/test/mocks/payment-clients/mock-applepay-client.js.map +1 -1
  70. package/dist/test/mocks/payment-clients/mock-applepay-payment.d.ts +0 -1
  71. package/dist/test/mocks/payment-clients/mock-applepay-paymentauthorizedevent.d.ts +0 -1
  72. package/dist/test/mocks/payment-clients/mock-applepay-session.d.ts +0 -1
  73. package/dist/test/mocks/payment-clients/mock-applepay-session.js +0 -2
  74. package/dist/test/mocks/payment-clients/mock-applepay-session.js.map +1 -1
  75. package/dist/test/mocks/payment-clients/mock-applepay-sessionmanager.d.ts +0 -1
  76. package/dist/test/mocks/payment-clients/mock-applepay-validatemerchantevent.d.ts +0 -1
  77. package/dist/test/mocks/payment-clients/mock-data-collector.js.map +1 -1
  78. package/dist/test/mocks/payment-clients/mock-googlepay-client.d.ts +0 -1
  79. package/dist/test/mocks/payment-clients/mock-googlepay-library.d.ts +0 -1
  80. package/dist/test/mocks/payment-clients/mock-grecaptcha.d.ts +0 -1
  81. package/dist/test/mocks/payment-clients/mock-grecaptcha.js +0 -1
  82. package/dist/test/mocks/payment-clients/mock-grecaptcha.js.map +1 -1
  83. package/dist/test/mocks/payment-clients/mock-hostedfields-client.js.map +1 -1
  84. package/dist/test/mocks/payment-clients/mock-hostedfieldtokenizepayload.d.ts +1 -1
  85. package/dist/test/mocks/payment-providers/individual-providers/mock-googlepay-handler.d.ts +0 -1
  86. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource.js +2 -2
  87. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource.js.map +1 -1
  88. package/dist/test/tests/braintree-manager.test.js +12 -13
  89. package/dist/test/tests/braintree-manager.test.js.map +1 -1
  90. package/dist/test/tests/donation-form-controller.test.js +21 -21
  91. package/dist/test/tests/donation-form.test.js +7 -7
  92. package/dist/test/tests/flow-handlers/donation-flow-modal-manager.test.js +8 -8
  93. package/dist/test/tests/form-elements/donation-summary.test.js +2 -2
  94. package/dist/test/tests/form-elements/payment-selector.test.js +8 -8
  95. package/dist/test/tests/modals/upsell-modal-content.test.js +21 -21
  96. package/dist/test/tests/models/donation-payment-info.test.js +7 -7
  97. package/dist/test/tests/models/donation-payment-info.test.js.map +1 -1
  98. package/dist/test/tests/payment-providers/applepay-sessiondatasource.test.js.map +1 -1
  99. package/dist/test/tests/payment-providers/creditcard.test.js.map +1 -1
  100. package/dist/test/tests/recaptcha-manager.test.js.map +1 -1
  101. package/package.json +40 -40
  102. package/src/braintree-manager/payment-clients.ts +0 -1
  103. package/src/braintree-manager/payment-providers/apple-pay/apple-pay.ts +0 -1
  104. package/src/donation-form-controller.ts +0 -1
  105. package/src/donation-form.ts +9 -6
  106. package/src/modals/confirm-donation-modal-content.ts +0 -2
  107. package/src/payment-flow-handlers/donation-flow-modal-manager.ts +0 -1
  108. package/src/payment-flow-handlers/handlers/paypal-flow-handler.ts +2 -4
  109. package/src/payment-flow-handlers/payment-flow-handlers.ts +0 -1
@@ -14,25 +14,25 @@ describe('Upsell Modal Content', () => {
14
14
  expect(noButton).to.exist;
15
15
  }));
16
16
  it('shows the proper yes button for non-paypal types', () => __awaiter(void 0, void 0, void 0, function* () {
17
- var _b, _c;
17
+ var _a, _b;
18
18
  const el = (yield fixture(html `
19
19
  <upsell-modal-content .yesButtonMode=${UpsellModalCTAMode.YesButton}></upsell-modal-content>
20
20
  `));
21
- const yesButton = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#yes-button');
21
+ const yesButton = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#yes-button');
22
22
  expect(yesButton).to.exist;
23
- const payPalSlot = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('.paypal-upsell-slot-container');
23
+ const payPalSlot = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.paypal-upsell-slot-container');
24
24
  expect(payPalSlot).to.not.exist;
25
25
  }));
26
26
  it('shows the paypal upsell slot for paypal upsells', () => __awaiter(void 0, void 0, void 0, function* () {
27
- var _d, _e;
27
+ var _a, _b;
28
28
  const el = (yield fixture(html `
29
29
  <upsell-modal-content
30
30
  .yesButtonMode=${UpsellModalCTAMode.PayPalUpsellSlot}
31
31
  ></upsell-modal-content>
32
32
  `));
33
- const payPalSlot = (_d = el.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector('.paypal-upsell-slot-container');
33
+ const payPalSlot = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.paypal-upsell-slot-container');
34
34
  expect(payPalSlot).to.exist;
35
- const yesButton = (_e = el.shadowRoot) === null || _e === void 0 ? void 0 : _e.querySelector('#yes-button');
35
+ const yesButton = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#yes-button');
36
36
  expect(yesButton).to.not.exist;
37
37
  }));
38
38
  });
@@ -55,11 +55,11 @@ describe('Upsell Modal Content', () => {
55
55
  expect(response.detail.amount).to.equal(7.5);
56
56
  }));
57
57
  it('emits a `noThanksSelected` event when no thanks is selected', () => __awaiter(void 0, void 0, void 0, function* () {
58
- var _b;
58
+ var _a;
59
59
  const el = (yield fixture(html `
60
60
  <upsell-modal-content></upsell-modal-content>
61
61
  `));
62
- const noButton = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#no-button');
62
+ const noButton = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#no-button');
63
63
  const clickEvent = new MouseEvent('click');
64
64
  setTimeout(() => {
65
65
  noButton === null || noButton === void 0 ? void 0 : noButton.dispatchEvent(clickEvent);
@@ -85,11 +85,11 @@ describe('Upsell Modal Content', () => {
85
85
  expect(response.detail.amount).to.equal(3.5);
86
86
  }));
87
87
  it('nothing happens if the input is empty', () => __awaiter(void 0, void 0, void 0, function* () {
88
- var _b;
88
+ var _a;
89
89
  const el = (yield fixture(html `
90
90
  <upsell-modal-content></upsell-modal-content>
91
91
  `));
92
- const amountInput = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#amount-input');
92
+ const amountInput = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#amount-input');
93
93
  amountInput.value = '';
94
94
  const inputEvent = new Event('input');
95
95
  expect(el.error).to.be.undefined;
@@ -98,14 +98,14 @@ describe('Upsell Modal Content', () => {
98
98
  expect(el.error).to.be.undefined;
99
99
  }));
100
100
  it('shows an error if the amount isNaN', () => __awaiter(void 0, void 0, void 0, function* () {
101
- var _c, _d;
101
+ var _a, _b;
102
102
  const el = (yield fixture(html `
103
103
  <upsell-modal-content></upsell-modal-content>
104
104
  `));
105
- const amountInput = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('#amount-input');
105
+ const amountInput = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#amount-input');
106
106
  amountInput.value = 'a';
107
107
  const inputEvent = new Event('input');
108
- const errorDiv = (_d = el.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector('.error');
108
+ const errorDiv = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.error');
109
109
  expect(el.error).to.be.undefined;
110
110
  amountInput.dispatchEvent(inputEvent);
111
111
  yield el.updateComplete;
@@ -113,14 +113,14 @@ describe('Upsell Modal Content', () => {
113
113
  expect(errorDiv === null || errorDiv === void 0 ? void 0 : errorDiv.innerHTML).to.contain('Please enter a valid amount.');
114
114
  }));
115
115
  it('shows an error if the amount is too low', () => __awaiter(void 0, void 0, void 0, function* () {
116
- var _e, _f;
116
+ var _a, _b;
117
117
  const el = (yield fixture(html `
118
118
  <upsell-modal-content></upsell-modal-content>
119
119
  `));
120
- const amountInput = (_e = el.shadowRoot) === null || _e === void 0 ? void 0 : _e.querySelector('#amount-input');
120
+ const amountInput = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#amount-input');
121
121
  amountInput.value = '0.99';
122
122
  const inputEvent = new Event('input');
123
- const errorDiv = (_f = el.shadowRoot) === null || _f === void 0 ? void 0 : _f.querySelector('.error');
123
+ const errorDiv = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.error');
124
124
  expect(el.error).to.be.undefined;
125
125
  amountInput.dispatchEvent(inputEvent);
126
126
  yield el.updateComplete;
@@ -128,14 +128,14 @@ describe('Upsell Modal Content', () => {
128
128
  expect(errorDiv === null || errorDiv === void 0 ? void 0 : errorDiv.innerHTML).to.contain('The minimum donation amount is $1');
129
129
  }));
130
130
  it('shows an error if the amount is too high', () => __awaiter(void 0, void 0, void 0, function* () {
131
- var _g, _h;
131
+ var _a, _b;
132
132
  const el = (yield fixture(html `
133
133
  <upsell-modal-content></upsell-modal-content>
134
134
  `));
135
- const amountInput = (_g = el.shadowRoot) === null || _g === void 0 ? void 0 : _g.querySelector('#amount-input');
135
+ const amountInput = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#amount-input');
136
136
  amountInput.value = '10000';
137
137
  const inputEvent = new Event('input');
138
- const errorDiv = (_h = el.shadowRoot) === null || _h === void 0 ? void 0 : _h.querySelector('.error');
138
+ const errorDiv = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.error');
139
139
  expect(el.error).to.be.undefined;
140
140
  amountInput.dispatchEvent(inputEvent);
141
141
  yield el.updateComplete;
@@ -143,13 +143,13 @@ describe('Upsell Modal Content', () => {
143
143
  expect(errorDiv === null || errorDiv === void 0 ? void 0 : errorDiv.innerHTML).to.contain('To make a donation of $10,000 or more');
144
144
  }));
145
145
  it('shows the paypal blocker if there is an error', () => __awaiter(void 0, void 0, void 0, function* () {
146
- var _j;
146
+ var _a;
147
147
  const el = (yield fixture(html `
148
148
  <upsell-modal-content
149
149
  .yesButtonMode=${UpsellModalCTAMode.PayPalUpsellSlot}
150
150
  ></upsell-modal-content>
151
151
  `));
152
- const paypalBlocker = (_j = el.shadowRoot) === null || _j === void 0 ? void 0 : _j.querySelector('.paypal-upsell-slot-blocker');
152
+ const paypalBlocker = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.paypal-upsell-slot-blocker');
153
153
  expect(el.error).to.be.undefined;
154
154
  expect(paypalBlocker.classList.contains('hidden')).to.be.true;
155
155
  el.error = lit2html `
@@ -4,7 +4,7 @@ import { DonationPaymentInfo, DonationType } from '@internetarchive/donation-for
4
4
  // this is a separate calculation from the one in DonationPaymentInfo
5
5
  // to have a second verification independent of it
6
6
  function calculateFee(amount) {
7
- return Math.round((amount * 0.022 + 0.3) * 100) / 100;
7
+ return Math.round((amount * 0.02 + 0.49) * 100) / 100;
8
8
  }
9
9
  describe('Donation Payment Info', () => {
10
10
  it('calculates the proper total for no fees covered', () => __awaiter(void 0, void 0, void 0, function* () {
@@ -18,13 +18,13 @@ describe('Donation Payment Info', () => {
18
18
  it('calculates the proper total for fees coverage', () => __awaiter(void 0, void 0, void 0, function* () {
19
19
  const baseAmount = 3.5;
20
20
  const expectedFee = calculateFee(baseAmount);
21
- const exptectedTotal = baseAmount + expectedFee;
21
+ const expectedTotal = Math.round((baseAmount + expectedFee) * 100) / 100;
22
22
  const donationInfo = new DonationPaymentInfo({
23
23
  donationType: DonationType.OneTime,
24
24
  amount: baseAmount,
25
25
  coverFees: true,
26
26
  });
27
- expect(donationInfo.total).to.equal(exptectedTotal);
27
+ expect(donationInfo.total).to.equal(expectedTotal);
28
28
  }));
29
29
  it('calculates the proper expected fees from manual calculations', () => __awaiter(void 0, void 0, void 0, function* () {
30
30
  const donationInfo = new DonationPaymentInfo({
@@ -32,11 +32,11 @@ describe('Donation Payment Info', () => {
32
32
  amount: 5,
33
33
  coverFees: true,
34
34
  });
35
- expect(donationInfo.fee).to.equal(0.41);
36
- expect(donationInfo.total).to.equal(5.41);
35
+ expect(donationInfo.fee).to.equal(0.59);
36
+ expect(donationInfo.total).to.equal(5.59);
37
37
  donationInfo.amount = 3.5;
38
- expect(donationInfo.fee).to.equal(0.38);
39
- expect(donationInfo.total).to.equal(3.88);
38
+ expect(donationInfo.fee).to.equal(0.56);
39
+ expect(donationInfo.total).to.equal(4.06);
40
40
  }));
41
41
  it('calculates the proper expected fees', () => __awaiter(void 0, void 0, void 0, function* () {
42
42
  const baseAmount = 3.23;
@@ -1 +1 @@
1
- {"version":3,"file":"donation-payment-info.test.js","sourceRoot":"","sources":["../../../../test/tests/models/donation-payment-info.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from '@open-wc/testing';\nimport { DonationPaymentInfo, DonationType } from '@internetarchive/donation-form-data-models';\n\n// this is a separate calculation from the one in DonationPaymentInfo\n// to have a second verification independent of it\nfunction calculateFee(amount: number): number {\n return Math.round((amount * 0.022 + 0.3) * 100) / 100;\n}\n\ndescribe('Donation Payment Info', () => {\n it('calculates the proper total for no fees covered', async () => {\n const donationInfo = new DonationPaymentInfo({\n donationType: DonationType.OneTime,\n amount: 3.5,\n coverFees: false,\n });\n\n expect(donationInfo.total).to.equal(3.5);\n });\n\n it('calculates the proper total for fees coverage', async () => {\n const baseAmount = 3.5;\n const expectedFee = calculateFee(baseAmount);\n const exptectedTotal = baseAmount + expectedFee;\n\n const donationInfo = new DonationPaymentInfo({\n donationType: DonationType.OneTime,\n amount: baseAmount,\n coverFees: true,\n });\n\n expect(donationInfo.total).to.equal(exptectedTotal);\n });\n\n it('calculates the proper expected fees from manual calculations', async () => {\n const donationInfo = new DonationPaymentInfo({\n donationType: DonationType.OneTime,\n amount: 5,\n coverFees: true,\n });\n expect(donationInfo.fee).to.equal(0.41);\n expect(donationInfo.total).to.equal(5.41);\n\n donationInfo.amount = 3.5;\n expect(donationInfo.fee).to.equal(0.38);\n expect(donationInfo.total).to.equal(3.88);\n });\n\n it('calculates the proper expected fees', async () => {\n const baseAmount = 3.23;\n const expectedFee = calculateFee(baseAmount);\n const calculatedFee = DonationPaymentInfo.calculateFeeAmount(baseAmount);\n expect(expectedFee).to.equal(calculatedFee);\n });\n\n it('get the proper fee amount covered when covering fees', async () => {\n const baseAmount = 4.12;\n const expectedFee = calculateFee(baseAmount);\n const donationInfo = new DonationPaymentInfo({\n donationType: DonationType.OneTime,\n amount: baseAmount,\n coverFees: true,\n });\n\n expect(donationInfo.feeAmountCovered).to.equal(expectedFee);\n });\n\n it('get the proper fee amount covered when not covering fees', async () => {\n const baseAmount = 4.12;\n // const expectedFee = calculateFee(baseAmount);\n const donationInfo = new DonationPaymentInfo({\n donationType: DonationType.OneTime,\n amount: baseAmount,\n coverFees: false,\n });\n\n expect(donationInfo.feeAmountCovered).to.equal(0);\n });\n\n it('calculates the proper expected total', async () => {\n const baseAmount = 3.29;\n const expectedFee = calculateFee(baseAmount);\n const expectedTotal = baseAmount + expectedFee;\n const calculatedTotal = DonationPaymentInfo.calculateTotal(baseAmount, true);\n expect(expectedTotal).to.equal(calculatedTotal);\n });\n});\n"]}
1
+ {"version":3,"file":"donation-payment-info.test.js","sourceRoot":"","sources":["../../../../test/tests/models/donation-payment-info.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from '@open-wc/testing';\nimport { DonationPaymentInfo, DonationType } from '@internetarchive/donation-form-data-models';\n\n// this is a separate calculation from the one in DonationPaymentInfo\n// to have a second verification independent of it\nfunction calculateFee(amount: number): number {\n return Math.round((amount * 0.02 + 0.49) * 100) / 100;\n}\n\ndescribe('Donation Payment Info', () => {\n it('calculates the proper total for no fees covered', async () => {\n const donationInfo = new DonationPaymentInfo({\n donationType: DonationType.OneTime,\n amount: 3.5,\n coverFees: false,\n });\n\n expect(donationInfo.total).to.equal(3.5);\n });\n\n it('calculates the proper total for fees coverage', async () => {\n const baseAmount = 3.5;\n const expectedFee = calculateFee(baseAmount);\n const expectedTotal = Math.round((baseAmount + expectedFee) * 100) / 100;\n\n const donationInfo = new DonationPaymentInfo({\n donationType: DonationType.OneTime,\n amount: baseAmount,\n coverFees: true,\n });\n\n expect(donationInfo.total).to.equal(expectedTotal);\n });\n\n it('calculates the proper expected fees from manual calculations', async () => {\n const donationInfo = new DonationPaymentInfo({\n donationType: DonationType.OneTime,\n amount: 5,\n coverFees: true,\n });\n expect(donationInfo.fee).to.equal(0.59);\n expect(donationInfo.total).to.equal(5.59);\n\n donationInfo.amount = 3.5;\n expect(donationInfo.fee).to.equal(0.56);\n expect(donationInfo.total).to.equal(4.06);\n });\n\n it('calculates the proper expected fees', async () => {\n const baseAmount = 3.23;\n const expectedFee = calculateFee(baseAmount);\n const calculatedFee = DonationPaymentInfo.calculateFeeAmount(baseAmount);\n expect(expectedFee).to.equal(calculatedFee);\n });\n\n it('get the proper fee amount covered when covering fees', async () => {\n const baseAmount = 4.12;\n const expectedFee = calculateFee(baseAmount);\n const donationInfo = new DonationPaymentInfo({\n donationType: DonationType.OneTime,\n amount: baseAmount,\n coverFees: true,\n });\n\n expect(donationInfo.feeAmountCovered).to.equal(expectedFee);\n });\n\n it('get the proper fee amount covered when not covering fees', async () => {\n const baseAmount = 4.12;\n // const expectedFee = calculateFee(baseAmount);\n const donationInfo = new DonationPaymentInfo({\n donationType: DonationType.OneTime,\n amount: baseAmount,\n coverFees: false,\n });\n\n expect(donationInfo.feeAmountCovered).to.equal(0);\n });\n\n it('calculates the proper expected total', async () => {\n const baseAmount = 3.29;\n const expectedFee = calculateFee(baseAmount);\n const expectedTotal = baseAmount + expectedFee;\n const calculatedTotal = DonationPaymentInfo.calculateTotal(baseAmount, true);\n expect(expectedTotal).to.equal(calculatedTotal);\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"applepay-sessiondatasource.test.js","sourceRoot":"","sources":["../../../../test/tests/payment-providers/applepay-sessiondatasource.test.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { expect } from '@open-wc/testing';\nimport { MockApplePaySession } from '../../mocks/payment-clients/mock-applepay-session';\nimport { MockApplePaySessionDataSourceDelegate } from '../../mocks/payment-providers/individual-providers/mock-applepay-datasource-delegate';\nimport { ApplePaySessionDataSource } from '../../../src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource';\nimport { MockBraintreeManager } from '../../mocks/mock-braintree-manager';\nimport { MockApplePayClient } from '../../mocks/payment-clients/mock-applepay-client';\nimport { MockApplePayValidateMerchantEvent } from '../../mocks/payment-clients/mock-applepay-validatemerchantevent';\nimport { MockApplePayPaymentAuthorizedEvent } from '../../mocks/payment-clients/mock-applepay-paymentauthorizedevent';\nimport { SuccessResponse } from '@internetarchive/donation-form-data-models';\nimport { MockDonationInfo } from '../../mocks/mock-donation-info';\n\ndescribe('ApplePaySessionDataSource', () => {\n describe('onvalidatemerchant', () => {\n it('performs validation and calls completeMerchantValidation', async () => {\n const session = new MockApplePaySession();\n const instance = new MockApplePayClient();\n const braintreeManager = new MockBraintreeManager();\n const delegate = new MockApplePaySessionDataSourceDelegate();\n const datasource = new ApplePaySessionDataSource({\n donationInfo: new MockDonationInfo(),\n session: session,\n applePayInstance: instance,\n braintreeManager: braintreeManager,\n });\n datasource.delegate = delegate;\n\n const event = new MockApplePayValidateMerchantEvent();\n\n await datasource.onvalidatemerchant(event);\n expect(session.completeMerchantValidationCalled).to.be.true;\n });\n\n it('notifies delegate and aborts session if validation fails', async () => {\n const session = new MockApplePaySession();\n const instance = new MockApplePayClient({ shouldValidateMerchant: false });\n const braintreeManager = new MockBraintreeManager();\n const delegate = new MockApplePaySessionDataSourceDelegate();\n const datasource = new ApplePaySessionDataSource({\n donationInfo: new MockDonationInfo(),\n session: session,\n applePayInstance: instance,\n braintreeManager: braintreeManager,\n });\n datasource.delegate = delegate;\n\n const event = new MockApplePayValidateMerchantEvent();\n\n try {\n await datasource.onvalidatemerchant(event);\n expect.fail('should not reach here');\n } catch (error) {\n expect(error).to.not.be.undefined;\n }\n });\n });\n\n describe('oncancel', () => {\n it('notifies the delegate when the payment is cancelled', async () => {\n const session = new MockApplePaySession();\n const instance = new MockApplePayClient();\n const braintreeManager = new MockBraintreeManager();\n const delegate = new MockApplePaySessionDataSourceDelegate();\n const datasource = new ApplePaySessionDataSource({\n donationInfo: new MockDonationInfo(),\n session: session,\n applePayInstance: instance,\n braintreeManager: braintreeManager,\n });\n datasource.delegate = delegate;\n datasource.oncancel();\n expect(delegate.paymentCancelledCalled).to.be.true;\n });\n });\n\n describe('onpaymentauthorized', () => {\n beforeEach(() => {\n (window['ApplePaySession' as any] as any) = MockApplePaySession;\n });\n\n afterEach(() => {\n delete window['ApplePaySession' as any];\n });\n\n it('notifies the delegate on payment completion and completes the session', async () => {\n const session = new MockApplePaySession();\n const instance = new MockApplePayClient();\n const braintreeManager = new MockBraintreeManager();\n const delegate = new MockApplePaySessionDataSourceDelegate();\n const datasource = new ApplePaySessionDataSource({\n donationInfo: new MockDonationInfo(),\n session: session,\n applePayInstance: instance,\n braintreeManager: braintreeManager,\n });\n datasource.delegate = delegate;\n\n const event = new MockApplePayPaymentAuthorizedEvent();\n\n await datasource.onpaymentauthorized(event);\n expect(session.completePaymentResult).to.equal(ApplePaySession.STATUS_SUCCESS);\n\n const response = delegate.paymentCompleteResponse;\n expect(response).to.not.be.undefined;\n expect(response?.success).to.be.true;\n\n const value = response?.value as SuccessResponse;\n expect(value.amount).to.equal(5);\n expect(value.customer.email).to.equal('foo@bar.com');\n expect(value.billing.streetAddress).to.equal('123 Fake St');\n expect(value.billing.extendedAddress).to.equal('Apt 123');\n });\n\n it('on tokenization failure, notifies the delegate and completes the session with a failure', async () => {\n const session = new MockApplePaySession();\n const instance = new MockApplePayClient({ shouldTokenizeSuccessfully: false });\n const braintreeManager = new MockBraintreeManager();\n const delegate = new MockApplePaySessionDataSourceDelegate();\n const datasource = new ApplePaySessionDataSource({\n donationInfo: new MockDonationInfo(),\n session: session,\n applePayInstance: instance,\n braintreeManager: braintreeManager,\n });\n datasource.delegate = delegate;\n\n const event = new MockApplePayPaymentAuthorizedEvent();\n\n await datasource.onpaymentauthorized(event);\n expect(session.completePaymentResult).to.equal(ApplePaySession.STATUS_FAILURE);\n const result = delegate.paymentFailedError;\n expect(result).to.deep.equal({\n code: 'foo',\n details: 'foo bar',\n message: 'bar',\n type: 'CUSTOMER',\n });\n });\n\n it('on submission failure, notifies the delegate and completes the session with a failure', async () => {\n const session = new MockApplePaySession();\n const instance = new MockApplePayClient({ shouldTokenizeSuccessfully: true });\n const braintreeManager = new MockBraintreeManager({ submitDonationResponse: 'failure' });\n const delegate = new MockApplePaySessionDataSourceDelegate();\n const datasource = new ApplePaySessionDataSource({\n donationInfo: new MockDonationInfo(),\n session: session,\n applePayInstance: instance,\n braintreeManager: braintreeManager,\n });\n datasource.delegate = delegate;\n\n const event = new MockApplePayPaymentAuthorizedEvent();\n\n await datasource.onpaymentauthorized(event);\n expect(session.completePaymentResult).to.equal(ApplePaySession.STATUS_FAILURE);\n const result = delegate.paymentFailedError;\n expect(result).to.equal('Failure submitting data');\n });\n\n it('on submission error, notifies the delegate and completes the session with a failure', async () => {\n const session = new MockApplePaySession();\n const instance = new MockApplePayClient({ shouldTokenizeSuccessfully: true });\n const braintreeManager = new MockBraintreeManager({ submitDonationError: true });\n const delegate = new MockApplePaySessionDataSourceDelegate();\n const datasource = new ApplePaySessionDataSource({\n donationInfo: new MockDonationInfo(),\n session: session,\n applePayInstance: instance,\n braintreeManager: braintreeManager,\n });\n datasource.delegate = delegate;\n\n const event = new MockApplePayPaymentAuthorizedEvent();\n\n await datasource.onpaymentauthorized(event);\n expect(session.completePaymentResult).to.equal(ApplePaySession.STATUS_FAILURE);\n const result = delegate.paymentFailedError;\n expect(result).to.equal('oh no');\n });\n });\n});\n"]}
1
+ {"version":3,"file":"applepay-sessiondatasource.test.js","sourceRoot":"","sources":["../../../../test/tests/payment-providers/applepay-sessiondatasource.test.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { expect } from '@open-wc/testing';\nimport { MockApplePaySession } from '../../mocks/payment-clients/mock-applepay-session';\nimport { MockApplePaySessionDataSourceDelegate } from '../../mocks/payment-providers/individual-providers/mock-applepay-datasource-delegate';\nimport { ApplePaySessionDataSource } from '../../../src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource';\nimport { MockBraintreeManager } from '../../mocks/mock-braintree-manager';\nimport { MockApplePayClient } from '../../mocks/payment-clients/mock-applepay-client';\nimport { MockApplePayValidateMerchantEvent } from '../../mocks/payment-clients/mock-applepay-validatemerchantevent';\nimport { MockApplePayPaymentAuthorizedEvent } from '../../mocks/payment-clients/mock-applepay-paymentauthorizedevent';\nimport { SuccessResponse } from '@internetarchive/donation-form-data-models';\nimport { MockDonationInfo } from '../../mocks/mock-donation-info';\n\ndescribe('ApplePaySessionDataSource', () => {\n describe('onvalidatemerchant', () => {\n it('performs validation and calls completeMerchantValidation', async () => {\n const session = new MockApplePaySession();\n const instance = new MockApplePayClient();\n const braintreeManager = new MockBraintreeManager();\n const delegate = new MockApplePaySessionDataSourceDelegate();\n const datasource = new ApplePaySessionDataSource({\n donationInfo: new MockDonationInfo(),\n session: session,\n applePayInstance: instance,\n braintreeManager: braintreeManager,\n });\n datasource.delegate = delegate;\n\n const event = new MockApplePayValidateMerchantEvent();\n\n await datasource.onvalidatemerchant(event);\n expect(session.completeMerchantValidationCalled).to.be.true;\n });\n\n it('notifies delegate and aborts session if validation fails', async () => {\n const session = new MockApplePaySession();\n const instance = new MockApplePayClient({ shouldValidateMerchant: false });\n const braintreeManager = new MockBraintreeManager();\n const delegate = new MockApplePaySessionDataSourceDelegate();\n const datasource = new ApplePaySessionDataSource({\n donationInfo: new MockDonationInfo(),\n session: session,\n applePayInstance: instance,\n braintreeManager: braintreeManager,\n });\n datasource.delegate = delegate;\n\n const event = new MockApplePayValidateMerchantEvent();\n\n try {\n await datasource.onvalidatemerchant(event);\n expect.fail('should not reach here');\n } catch (error) {\n expect(error).to.not.be.undefined;\n }\n });\n });\n\n describe('oncancel', () => {\n it('notifies the delegate when the payment is cancelled', async () => {\n const session = new MockApplePaySession();\n const instance = new MockApplePayClient();\n const braintreeManager = new MockBraintreeManager();\n const delegate = new MockApplePaySessionDataSourceDelegate();\n const datasource = new ApplePaySessionDataSource({\n donationInfo: new MockDonationInfo(),\n session: session,\n applePayInstance: instance,\n braintreeManager: braintreeManager,\n });\n datasource.delegate = delegate;\n datasource.oncancel();\n expect(delegate.paymentCancelledCalled).to.be.true;\n });\n });\n\n describe('onpaymentauthorized', () => {\n beforeEach(() => {\n (window['ApplePaySession' as any] as any) = MockApplePaySession;\n });\n\n afterEach(() => {\n delete window['ApplePaySession' as any];\n });\n\n it('notifies the delegate on payment completion and completes the session', async () => {\n const session = new MockApplePaySession();\n const instance = new MockApplePayClient();\n const braintreeManager = new MockBraintreeManager();\n const delegate = new MockApplePaySessionDataSourceDelegate();\n const datasource = new ApplePaySessionDataSource({\n donationInfo: new MockDonationInfo(),\n session: session,\n applePayInstance: instance,\n braintreeManager: braintreeManager,\n });\n datasource.delegate = delegate;\n\n const event = new MockApplePayPaymentAuthorizedEvent();\n\n await datasource.onpaymentauthorized(event);\n expect(session.completePaymentResult).to.equal(ApplePaySession.STATUS_SUCCESS);\n\n const response = delegate.paymentCompleteResponse;\n expect(response).to.not.be.undefined;\n expect(response?.success).to.be.true;\n\n const value = response?.value as SuccessResponse;\n expect(value.amount).to.equal(5);\n expect(value.customer.email).to.equal('foo@bar.com');\n expect(value.billing.streetAddress).to.equal('123 Fake St');\n expect(value.billing.extendedAddress).to.equal('Apt 123');\n });\n\n it('on tokenization failure, notifies the delegate and completes the session with a failure', async () => {\n const session = new MockApplePaySession();\n const instance = new MockApplePayClient({ shouldTokenizeSuccessfully: false });\n const braintreeManager = new MockBraintreeManager();\n const delegate = new MockApplePaySessionDataSourceDelegate();\n const datasource = new ApplePaySessionDataSource({\n donationInfo: new MockDonationInfo(),\n session: session,\n applePayInstance: instance,\n braintreeManager: braintreeManager,\n });\n datasource.delegate = delegate;\n\n const event = new MockApplePayPaymentAuthorizedEvent();\n\n await datasource.onpaymentauthorized(event);\n expect(session.completePaymentResult).to.equal(ApplePaySession.STATUS_FAILURE);\n const result = delegate.paymentFailedError;\n expect(result).to.deep.equal({\n code: 'foo',\n details: 'foo bar',\n message: 'bar',\n type: 'CUSTOMER',\n });\n });\n\n it('on submission failure, notifies the delegate and completes the session with a failure', async () => {\n const session = new MockApplePaySession();\n const instance = new MockApplePayClient({ shouldTokenizeSuccessfully: true });\n const braintreeManager = new MockBraintreeManager({ submitDonationResponse: 'failure' });\n const delegate = new MockApplePaySessionDataSourceDelegate();\n const datasource = new ApplePaySessionDataSource({\n donationInfo: new MockDonationInfo(),\n session: session,\n applePayInstance: instance,\n braintreeManager: braintreeManager,\n });\n datasource.delegate = delegate;\n\n const event = new MockApplePayPaymentAuthorizedEvent();\n\n await datasource.onpaymentauthorized(event);\n expect(session.completePaymentResult).to.equal(ApplePaySession.STATUS_FAILURE);\n const result = delegate.paymentFailedError;\n expect(result).to.equal('Failure submitting data');\n });\n\n it('on submission error, notifies the delegate and completes the session with a failure', async () => {\n const session = new MockApplePaySession();\n const instance = new MockApplePayClient({ shouldTokenizeSuccessfully: true });\n const braintreeManager = new MockBraintreeManager({ submitDonationError: true });\n const delegate = new MockApplePaySessionDataSourceDelegate();\n const datasource = new ApplePaySessionDataSource({\n donationInfo: new MockDonationInfo(),\n session: session,\n applePayInstance: instance,\n braintreeManager: braintreeManager,\n });\n datasource.delegate = delegate;\n\n const event = new MockApplePayPaymentAuthorizedEvent();\n\n await datasource.onpaymentauthorized(event);\n expect(session.completePaymentResult).to.equal(ApplePaySession.STATUS_FAILURE);\n const result = delegate.paymentFailedError;\n expect(result).to.equal('oh no');\n });\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"creditcard.test.js","sourceRoot":"","sources":["../../../../test/tests/payment-providers/creditcard.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from '@open-wc/testing';\nimport { MockBraintreeManager } from '../../mocks/mock-braintree-manager';\nimport { MockHostedFieldsClient } from '../../mocks/payment-clients/mock-hostedfields-client';\nimport { mockHostedFieldTokenizePayload } from '../../mocks/payment-clients/mock-hostedfieldtokenizepayload';\nimport { CreditCardHandler } from '../../../src/braintree-manager/payment-providers/credit-card/credit-card';\nimport { MockHostedFieldContainer } from '../../mocks/mock-hosted-fields-container';\nimport { HostedFieldConfiguration } from '../../../src/braintree-manager/payment-providers/credit-card/hosted-field-configuration';\nimport Sinon from 'sinon';\nimport {\n mockHostedFieldStyle,\n mockHostedFieldFieldOptions,\n mockHostedFieldConfig,\n} from '../../mocks/mock-hosted-fields-config';\n\nconst sandbox = Sinon.createSandbox();\n\ndescribe('CreditCardHandler', () => {\n afterEach(() => {\n sandbox.restore();\n });\n\n it('can tokenize the hosted fields', async () => {\n const braintreeManager = new MockBraintreeManager();\n const client = new MockHostedFieldsClient({\n mockHostedFieldTokenizePayload: mockHostedFieldTokenizePayload,\n });\n\n const handler = new CreditCardHandler({\n braintreeManager: braintreeManager,\n hostedFieldClient: client,\n hostedFieldConfig: mockHostedFieldConfig,\n });\n\n const payload = await handler.tokenizeHostedFields();\n\n expect(payload?.nonce).to.equal(mockHostedFieldTokenizePayload.nonce);\n });\n\n it('can mark field errors', async () => {\n const braintreeManager = new MockBraintreeManager();\n const client = new MockHostedFieldsClient();\n const mockHostedFieldContainer = new MockHostedFieldContainer();\n const mockHostedFieldConfig: HostedFieldConfiguration = new HostedFieldConfiguration({\n hostedFieldStyle: mockHostedFieldStyle,\n hostedFieldFieldOptions: mockHostedFieldFieldOptions,\n hostedFieldContainer: mockHostedFieldContainer,\n });\n const handler = new CreditCardHandler({\n braintreeManager: braintreeManager,\n hostedFieldClient: client,\n hostedFieldConfig: mockHostedFieldConfig,\n });\n handler.markFieldErrors([]);\n expect(mockHostedFieldContainer.markErrorsCalled).to.be.true;\n });\n\n it('can remove field errors', async () => {\n const braintreeManager = new MockBraintreeManager();\n const client = new MockHostedFieldsClient();\n const mockHostedFieldContainer = new MockHostedFieldContainer();\n const mockHostedFieldConfig: HostedFieldConfiguration = new HostedFieldConfiguration({\n hostedFieldStyle: mockHostedFieldStyle,\n hostedFieldFieldOptions: mockHostedFieldFieldOptions,\n hostedFieldContainer: mockHostedFieldContainer,\n });\n const handler = new CreditCardHandler({\n braintreeManager: braintreeManager,\n hostedFieldClient: client,\n hostedFieldConfig: mockHostedFieldConfig,\n });\n handler.removeFieldErrors([]);\n expect(mockHostedFieldContainer.removeErrorsCalled).to.be.true;\n });\n\n it('can show the error message', async () => {\n const braintreeManager = new MockBraintreeManager();\n const client = new MockHostedFieldsClient();\n const mockHostedFieldContainer = new MockHostedFieldContainer();\n const mockHostedFieldConfig: HostedFieldConfiguration = new HostedFieldConfiguration({\n hostedFieldStyle: mockHostedFieldStyle,\n hostedFieldFieldOptions: mockHostedFieldFieldOptions,\n hostedFieldContainer: mockHostedFieldContainer,\n });\n const handler = new CreditCardHandler({\n braintreeManager: braintreeManager,\n hostedFieldClient: client,\n hostedFieldConfig: mockHostedFieldConfig,\n });\n handler.showErrorMessage();\n expect(mockHostedFieldContainer.showErrorMessageCalled).to.be.true;\n });\n\n it('can hide the error message', async () => {\n const braintreeManager = new MockBraintreeManager();\n const client = new MockHostedFieldsClient();\n const mockHostedFieldContainer = new MockHostedFieldContainer();\n const mockHostedFieldConfig: HostedFieldConfiguration = new HostedFieldConfiguration({\n hostedFieldStyle: mockHostedFieldStyle,\n hostedFieldFieldOptions: mockHostedFieldFieldOptions,\n hostedFieldContainer: mockHostedFieldContainer,\n });\n const handler = new CreditCardHandler({\n braintreeManager: braintreeManager,\n hostedFieldClient: client,\n hostedFieldConfig: mockHostedFieldConfig,\n });\n handler.hideErrorMessage();\n expect(mockHostedFieldContainer.hideErrorMessageCalled).to.be.true;\n });\n\n it('retries the expected number of times before failure', async () => {\n const braintreeManager = new MockBraintreeManager();\n const client = new MockHostedFieldsClient();\n\n let retryCount = 0;\n Sinon.stub(client, 'create').callsFake(() => {\n retryCount++;\n throw new Error('Error');\n });\n\n const mockHostedFieldContainer = new MockHostedFieldContainer();\n const hostedFieldsSpy = Sinon.spy(mockHostedFieldContainer, 'resetHostedFields');\n\n const mockHostedFieldConfig: HostedFieldConfiguration = new HostedFieldConfiguration({\n hostedFieldStyle: mockHostedFieldStyle,\n hostedFieldFieldOptions: mockHostedFieldFieldOptions,\n hostedFieldContainer: mockHostedFieldContainer,\n });\n const handler = new CreditCardHandler({\n braintreeManager: braintreeManager,\n hostedFieldClient: client,\n hostedFieldConfig: mockHostedFieldConfig,\n maxRetryCount: 3,\n loadTimeout: 0.01,\n });\n\n try {\n await handler.instance.get();\n expect.fail('Should have thrown an error');\n } catch (e) {}\n\n // initial call + 3 retries\n expect(retryCount).to.equal(4);\n expect(hostedFieldsSpy.callCount).to.equal(4);\n });\n\n it('retries creating the hosted fields if they fail', async () => {\n const braintreeManager = new MockBraintreeManager();\n const client = new MockHostedFieldsClient();\n\n let retryCount = 0;\n Sinon.stub(client, 'create').callsFake(() => {\n if (retryCount < 2) {\n retryCount++;\n throw new Error('Error');\n }\n return Promise.resolve(client);\n });\n\n const mockHostedFieldContainer = new MockHostedFieldContainer();\n const mockHostedFieldConfig: HostedFieldConfiguration = new HostedFieldConfiguration({\n hostedFieldStyle: mockHostedFieldStyle,\n hostedFieldFieldOptions: mockHostedFieldFieldOptions,\n hostedFieldContainer: mockHostedFieldContainer,\n });\n const handler = new CreditCardHandler({\n braintreeManager: braintreeManager,\n hostedFieldClient: client,\n hostedFieldConfig: mockHostedFieldConfig,\n maxRetryCount: 3,\n loadTimeout: 0.01,\n });\n\n const instance = await handler.instance.get();\n expect(instance).to.not.be.null;\n expect(retryCount).to.equal(2);\n });\n\n it('emits an event when retrying or failing', async () => {\n const braintreeManager = new MockBraintreeManager();\n const client = new MockHostedFieldsClient();\n\n Sinon.stub(client, 'create').callsFake(() => {\n throw new Error('Error');\n });\n\n const mockHostedFieldContainer = new MockHostedFieldContainer();\n const mockHostedFieldConfig: HostedFieldConfiguration = new HostedFieldConfiguration({\n hostedFieldStyle: mockHostedFieldStyle,\n hostedFieldFieldOptions: mockHostedFieldFieldOptions,\n hostedFieldContainer: mockHostedFieldContainer,\n });\n const handler = new CreditCardHandler({\n braintreeManager: braintreeManager,\n hostedFieldClient: client,\n hostedFieldConfig: mockHostedFieldConfig,\n maxRetryCount: 3,\n loadTimeout: 0.01,\n });\n\n let retryCountEvent = 0;\n let retryFailedEvent = 0;\n handler.on('hostedFieldsRetry', () => {\n retryCountEvent++;\n });\n handler.on('hostedFieldsFailed', () => {\n retryFailedEvent++;\n });\n\n try {\n await handler.instance.get();\n } catch (e) {}\n\n expect(retryCountEvent).to.equal(3);\n expect(retryFailedEvent).to.equal(1);\n });\n});\n"]}
1
+ {"version":3,"file":"creditcard.test.js","sourceRoot":"","sources":["../../../../test/tests/payment-providers/creditcard.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from '@open-wc/testing';\nimport { MockBraintreeManager } from '../../mocks/mock-braintree-manager';\nimport { MockHostedFieldsClient } from '../../mocks/payment-clients/mock-hostedfields-client';\nimport { mockHostedFieldTokenizePayload } from '../../mocks/payment-clients/mock-hostedfieldtokenizepayload';\nimport { CreditCardHandler } from '../../../src/braintree-manager/payment-providers/credit-card/credit-card';\nimport { MockHostedFieldContainer } from '../../mocks/mock-hosted-fields-container';\nimport { HostedFieldConfiguration } from '../../../src/braintree-manager/payment-providers/credit-card/hosted-field-configuration';\nimport Sinon from 'sinon';\nimport {\n mockHostedFieldStyle,\n mockHostedFieldFieldOptions,\n mockHostedFieldConfig,\n} from '../../mocks/mock-hosted-fields-config';\n\nconst sandbox = Sinon.createSandbox();\n\ndescribe('CreditCardHandler', () => {\n afterEach(() => {\n sandbox.restore();\n });\n\n it('can tokenize the hosted fields', async () => {\n const braintreeManager = new MockBraintreeManager();\n const client = new MockHostedFieldsClient({\n mockHostedFieldTokenizePayload: mockHostedFieldTokenizePayload,\n });\n\n const handler = new CreditCardHandler({\n braintreeManager: braintreeManager,\n hostedFieldClient: client,\n hostedFieldConfig: mockHostedFieldConfig,\n });\n\n const payload = await handler.tokenizeHostedFields();\n\n expect(payload?.nonce).to.equal(mockHostedFieldTokenizePayload.nonce);\n });\n\n it('can mark field errors', async () => {\n const braintreeManager = new MockBraintreeManager();\n const client = new MockHostedFieldsClient();\n const mockHostedFieldContainer = new MockHostedFieldContainer();\n const mockHostedFieldConfig: HostedFieldConfiguration = new HostedFieldConfiguration({\n hostedFieldStyle: mockHostedFieldStyle,\n hostedFieldFieldOptions: mockHostedFieldFieldOptions,\n hostedFieldContainer: mockHostedFieldContainer,\n });\n const handler = new CreditCardHandler({\n braintreeManager: braintreeManager,\n hostedFieldClient: client,\n hostedFieldConfig: mockHostedFieldConfig,\n });\n handler.markFieldErrors([]);\n expect(mockHostedFieldContainer.markErrorsCalled).to.be.true;\n });\n\n it('can remove field errors', async () => {\n const braintreeManager = new MockBraintreeManager();\n const client = new MockHostedFieldsClient();\n const mockHostedFieldContainer = new MockHostedFieldContainer();\n const mockHostedFieldConfig: HostedFieldConfiguration = new HostedFieldConfiguration({\n hostedFieldStyle: mockHostedFieldStyle,\n hostedFieldFieldOptions: mockHostedFieldFieldOptions,\n hostedFieldContainer: mockHostedFieldContainer,\n });\n const handler = new CreditCardHandler({\n braintreeManager: braintreeManager,\n hostedFieldClient: client,\n hostedFieldConfig: mockHostedFieldConfig,\n });\n handler.removeFieldErrors([]);\n expect(mockHostedFieldContainer.removeErrorsCalled).to.be.true;\n });\n\n it('can show the error message', async () => {\n const braintreeManager = new MockBraintreeManager();\n const client = new MockHostedFieldsClient();\n const mockHostedFieldContainer = new MockHostedFieldContainer();\n const mockHostedFieldConfig: HostedFieldConfiguration = new HostedFieldConfiguration({\n hostedFieldStyle: mockHostedFieldStyle,\n hostedFieldFieldOptions: mockHostedFieldFieldOptions,\n hostedFieldContainer: mockHostedFieldContainer,\n });\n const handler = new CreditCardHandler({\n braintreeManager: braintreeManager,\n hostedFieldClient: client,\n hostedFieldConfig: mockHostedFieldConfig,\n });\n handler.showErrorMessage();\n expect(mockHostedFieldContainer.showErrorMessageCalled).to.be.true;\n });\n\n it('can hide the error message', async () => {\n const braintreeManager = new MockBraintreeManager();\n const client = new MockHostedFieldsClient();\n const mockHostedFieldContainer = new MockHostedFieldContainer();\n const mockHostedFieldConfig: HostedFieldConfiguration = new HostedFieldConfiguration({\n hostedFieldStyle: mockHostedFieldStyle,\n hostedFieldFieldOptions: mockHostedFieldFieldOptions,\n hostedFieldContainer: mockHostedFieldContainer,\n });\n const handler = new CreditCardHandler({\n braintreeManager: braintreeManager,\n hostedFieldClient: client,\n hostedFieldConfig: mockHostedFieldConfig,\n });\n handler.hideErrorMessage();\n expect(mockHostedFieldContainer.hideErrorMessageCalled).to.be.true;\n });\n\n it('retries the expected number of times before failure', async () => {\n const braintreeManager = new MockBraintreeManager();\n const client = new MockHostedFieldsClient();\n\n let retryCount = 0;\n Sinon.stub(client, 'create').callsFake(() => {\n retryCount++;\n throw new Error('Error');\n });\n\n const mockHostedFieldContainer = new MockHostedFieldContainer();\n const hostedFieldsSpy = Sinon.spy(mockHostedFieldContainer, 'resetHostedFields');\n\n const mockHostedFieldConfig: HostedFieldConfiguration = new HostedFieldConfiguration({\n hostedFieldStyle: mockHostedFieldStyle,\n hostedFieldFieldOptions: mockHostedFieldFieldOptions,\n hostedFieldContainer: mockHostedFieldContainer,\n });\n const handler = new CreditCardHandler({\n braintreeManager: braintreeManager,\n hostedFieldClient: client,\n hostedFieldConfig: mockHostedFieldConfig,\n maxRetryCount: 3,\n loadTimeout: 0.01,\n });\n\n try {\n await handler.instance.get();\n expect.fail('Should have thrown an error');\n } catch (e) {}\n\n // initial call + 3 retries\n expect(retryCount).to.equal(4);\n expect(hostedFieldsSpy.callCount).to.equal(4);\n });\n\n it('retries creating the hosted fields if they fail', async () => {\n const braintreeManager = new MockBraintreeManager();\n const client = new MockHostedFieldsClient();\n\n let retryCount = 0;\n Sinon.stub(client, 'create').callsFake(() => {\n if (retryCount < 2) {\n retryCount++;\n throw new Error('Error');\n }\n return Promise.resolve(client);\n });\n\n const mockHostedFieldContainer = new MockHostedFieldContainer();\n const mockHostedFieldConfig: HostedFieldConfiguration = new HostedFieldConfiguration({\n hostedFieldStyle: mockHostedFieldStyle,\n hostedFieldFieldOptions: mockHostedFieldFieldOptions,\n hostedFieldContainer: mockHostedFieldContainer,\n });\n const handler = new CreditCardHandler({\n braintreeManager: braintreeManager,\n hostedFieldClient: client,\n hostedFieldConfig: mockHostedFieldConfig,\n maxRetryCount: 3,\n loadTimeout: 0.01,\n });\n\n const instance = await handler.instance.get();\n expect(instance).to.not.be.null;\n expect(retryCount).to.equal(2);\n });\n\n it('emits an event when retrying or failing', async () => {\n const braintreeManager = new MockBraintreeManager();\n const client = new MockHostedFieldsClient();\n\n Sinon.stub(client, 'create').callsFake(() => {\n throw new Error('Error');\n });\n\n const mockHostedFieldContainer = new MockHostedFieldContainer();\n const mockHostedFieldConfig: HostedFieldConfiguration = new HostedFieldConfiguration({\n hostedFieldStyle: mockHostedFieldStyle,\n hostedFieldFieldOptions: mockHostedFieldFieldOptions,\n hostedFieldContainer: mockHostedFieldContainer,\n });\n const handler = new CreditCardHandler({\n braintreeManager: braintreeManager,\n hostedFieldClient: client,\n hostedFieldConfig: mockHostedFieldConfig,\n maxRetryCount: 3,\n loadTimeout: 0.01,\n });\n\n let retryCountEvent = 0;\n let retryFailedEvent = 0;\n handler.on('hostedFieldsRetry', () => {\n retryCountEvent++;\n });\n handler.on('hostedFieldsFailed', () => {\n retryFailedEvent++;\n });\n\n try {\n await handler.instance.get();\n } catch (e) {}\n\n expect(retryCountEvent).to.equal(3);\n expect(retryFailedEvent).to.equal(1);\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"recaptcha-manager.test.js","sourceRoot":"","sources":["../../../test/tests/recaptcha-manager.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, fixture, expect } from '@open-wc/testing';\nimport { MockGrecaptcha, MockGrecaptchaMode } from '../mocks/payment-clients/mock-grecaptcha';\nimport { RecaptchaManager } from '../../src/recaptcha-manager/recaptcha-manager';\n\ndescribe('ReCaptcha Manager', () => {\n it('can execute the recaptcha like a Promise', async () => {\n const recaptchaElement = (await fixture(html` <div></div> `)) as HTMLElement;\n const mockGrecaptcha = new MockGrecaptcha(MockGrecaptchaMode.Success);\n const recaptchaManager = new RecaptchaManager({\n grecaptchaLibrary: mockGrecaptcha,\n siteKey: '123',\n });\n recaptchaManager.setup(recaptchaElement, 1, 'dark', 'image');\n const result = await recaptchaManager.execute();\n expect(result).to.equal('foo');\n });\n\n it('can error properly like a Promise', async () => {\n const recaptchaElement = (await fixture(html` <div></div> `)) as HTMLElement;\n const mockGrecaptcha = new MockGrecaptcha(MockGrecaptchaMode.Error);\n const recaptchaManager = new RecaptchaManager({\n grecaptchaLibrary: mockGrecaptcha,\n siteKey: '123',\n });\n recaptchaManager.setup(recaptchaElement, 1, 'dark', 'image');\n try {\n await recaptchaManager.execute();\n expect.fail('should not get here');\n } catch (error) {\n expect(error).to.equal('error');\n }\n });\n\n it('can expire properly like a Promise', async () => {\n const recaptchaElement = (await fixture(html` <div></div> `)) as HTMLElement;\n const mockGrecaptcha = new MockGrecaptcha(MockGrecaptchaMode.Expired);\n const recaptchaManager = new RecaptchaManager({\n grecaptchaLibrary: mockGrecaptcha,\n siteKey: '123',\n });\n recaptchaManager.setup(recaptchaElement, 1, 'dark', 'image');\n try {\n await recaptchaManager.execute();\n expect.fail('should not get here');\n } catch (error) {\n expect(error).to.equal('expired');\n }\n });\n\n it('resets the captcha if execute() gets called more than once', async () => {\n const recaptchaElement = (await fixture(html` <div></div> `)) as HTMLElement;\n const mockGrecaptcha = new MockGrecaptcha(MockGrecaptchaMode.Success, true);\n const recaptchaManager = new RecaptchaManager({\n grecaptchaLibrary: mockGrecaptcha,\n siteKey: '123',\n });\n recaptchaManager.setup(recaptchaElement, 1, 'dark', 'image');\n recaptchaManager.execute();\n expect(mockGrecaptcha.resetCalled).to.be.false;\n recaptchaManager.execute();\n expect(mockGrecaptcha.resetCalled).to.be.true;\n });\n});\n"]}
1
+ {"version":3,"file":"recaptcha-manager.test.js","sourceRoot":"","sources":["../../../test/tests/recaptcha-manager.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, fixture, expect } from '@open-wc/testing';\nimport { MockGrecaptcha, MockGrecaptchaMode } from '../mocks/payment-clients/mock-grecaptcha';\nimport { RecaptchaManager } from '../../src/recaptcha-manager/recaptcha-manager';\n\ndescribe('ReCaptcha Manager', () => {\n it('can execute the recaptcha like a Promise', async () => {\n const recaptchaElement = (await fixture(html` <div></div> `)) as HTMLElement;\n const mockGrecaptcha = new MockGrecaptcha(MockGrecaptchaMode.Success);\n const recaptchaManager = new RecaptchaManager({\n grecaptchaLibrary: mockGrecaptcha,\n siteKey: '123',\n });\n recaptchaManager.setup(recaptchaElement, 1, 'dark', 'image');\n const result = await recaptchaManager.execute();\n expect(result).to.equal('foo');\n });\n\n it('can error properly like a Promise', async () => {\n const recaptchaElement = (await fixture(html` <div></div> `)) as HTMLElement;\n const mockGrecaptcha = new MockGrecaptcha(MockGrecaptchaMode.Error);\n const recaptchaManager = new RecaptchaManager({\n grecaptchaLibrary: mockGrecaptcha,\n siteKey: '123',\n });\n recaptchaManager.setup(recaptchaElement, 1, 'dark', 'image');\n try {\n await recaptchaManager.execute();\n expect.fail('should not get here');\n } catch (error) {\n expect(error).to.equal('error');\n }\n });\n\n it('can expire properly like a Promise', async () => {\n const recaptchaElement = (await fixture(html` <div></div> `)) as HTMLElement;\n const mockGrecaptcha = new MockGrecaptcha(MockGrecaptchaMode.Expired);\n const recaptchaManager = new RecaptchaManager({\n grecaptchaLibrary: mockGrecaptcha,\n siteKey: '123',\n });\n recaptchaManager.setup(recaptchaElement, 1, 'dark', 'image');\n try {\n await recaptchaManager.execute();\n expect.fail('should not get here');\n } catch (error) {\n expect(error).to.equal('expired');\n }\n });\n\n it('resets the captcha if execute() gets called more than once', async () => {\n const recaptchaElement = (await fixture(html` <div></div> `)) as HTMLElement;\n const mockGrecaptcha = new MockGrecaptcha(MockGrecaptchaMode.Success, true);\n const recaptchaManager = new RecaptchaManager({\n grecaptchaLibrary: mockGrecaptcha,\n siteKey: '123',\n });\n recaptchaManager.setup(recaptchaElement, 1, 'dark', 'image');\n recaptchaManager.execute();\n expect(mockGrecaptcha.resetCalled).to.be.false;\n recaptchaManager.execute();\n expect(mockGrecaptcha.resetCalled).to.be.true;\n });\n});\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@internetarchive/donation-form",
3
- "version": "0.6.2",
3
+ "version": "0.6.3-alpha.1",
4
4
  "description": "The Internet Archive Donation Form",
5
5
  "license": "AGPL-3.0-only",
6
6
  "main": "dist/index.js",
@@ -17,10 +17,10 @@
17
17
  "build": "tsc -p tsconfig.build.json",
18
18
  "start": "tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"wds --app-index demo/index.html --node-resolve --open --watch --preserve-symlinks\"",
19
19
  "tsc:watch": "tsc --watch",
20
- "lint:eslint": "eslint --ext .ts,.html . --ignore-path .gitignore",
21
- "format:eslint": "eslint --ext .ts,.html . --fix --ignore-path .gitignore",
22
- "lint:prettier": "prettier \"**/*.js\" \"**/*.ts\" --check --ignore-path .gitignore",
23
- "format:prettier": "prettier \"**/*.js\" \"**/*.ts\" --write --ignore-path .gitignore",
20
+ "lint:eslint": "eslint .",
21
+ "format:eslint": "eslint . --fix",
22
+ "lint:prettier": "prettier \"**/*.js\" \"**/*.ts\" --check",
23
+ "format:prettier": "prettier \"**/*.js\" \"**/*.ts\" --write",
24
24
  "lint": "yarn run lint:eslint && yarn run lint:prettier",
25
25
  "format": "yarn run format:eslint && yarn run format:prettier",
26
26
  "circular": "madge --circular --extensions ts .",
@@ -28,11 +28,11 @@
28
28
  "test:watch": "tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"wtr test/tests/**/*.test.ts --node-resolve --watch\""
29
29
  },
30
30
  "dependencies": {
31
- "@internetarchive/analytics-manager": "^0.1.2",
32
- "@internetarchive/donation-form-currency-validator": "^0.3.0",
33
- "@internetarchive/donation-form-data-models": "^0.3.4",
34
- "@internetarchive/donation-form-edit-donation": "^1.1.2",
35
- "@internetarchive/donation-form-section": "^0.3.5",
31
+ "@internetarchive/analytics-manager": "^0.1.4",
32
+ "@internetarchive/donation-form-currency-validator": "0.3.1-alpha.1",
33
+ "@internetarchive/donation-form-data-models": "0.3.5-alpha.1",
34
+ "@internetarchive/donation-form-edit-donation": "1.1.3-alpha.1",
35
+ "@internetarchive/donation-form-section": "0.3.6-alpha.1",
36
36
  "@internetarchive/icon-applepay": "^1.3.2",
37
37
  "@internetarchive/icon-calendar": "^1.3.2",
38
38
  "@internetarchive/icon-credit-card": "^1.3.2",
@@ -44,44 +44,44 @@
44
44
  "@internetarchive/icon-user": "^1.3.2",
45
45
  "@internetarchive/icon-venmo": "^1.3.2",
46
46
  "@internetarchive/lazy-loader-service": "^0.2.0",
47
- "@internetarchive/modal-manager": "^0.2.8",
47
+ "@internetarchive/modal-manager": "^2.0.0",
48
48
  "@internetarchive/promised-singleton": "^0.2.1",
49
49
  "currency.js": "^2.0.2",
50
50
  "lit": "^2.8.0",
51
- "nanoevents": "^5.1.8"
51
+ "nanoevents": "^9.1.0"
52
52
  },
53
53
  "devDependencies": {
54
- "@babel/core": "^7.23.3",
55
- "@open-wc/eslint-config": "^12.0.2",
54
+ "@babel/core": "^7.26.0",
55
+ "@open-wc/eslint-config": "^12.0.3",
56
56
  "@open-wc/prettier-config": "^1.1.0",
57
- "@open-wc/testing": "^3.1.6",
57
+ "@open-wc/testing": "^4.0.0",
58
58
  "@types/applepayjs": "^3.0.0",
59
- "@types/googlepay": "^0.4.1",
59
+ "@types/googlepay": "^0.7.6",
60
60
  "@types/grecaptcha": "^2.0.36",
61
- "@types/mocha": "^10.0.4",
62
- "@typescript-eslint/eslint-plugin": "^6.0.0",
63
- "@typescript-eslint/parser": "^6.0.0",
64
- "@web/dev-server": "^0.3.0",
65
- "@web/test-runner": "^0.17.0",
66
- "concurrently": "^8.0.0",
67
- "eslint": "^8.18.0",
68
- "eslint-config-prettier": "^8.5.0",
69
- "eslint-plugin-html": "^7.1.0",
70
- "eslint-plugin-import": "^2.26.0",
71
- "eslint-plugin-lit": "^1.7.2",
72
- "eslint-plugin-lit-a11y": "^4.1.1",
73
- "eslint-plugin-no-only-tests": "^3.1.0",
74
- "eslint-plugin-wc": "^2.0.4",
75
- "form-data": "^3.0.0",
76
- "husky": "^8.0.3",
77
- "karma": "^6.4.2",
78
- "lint-staged": "^8.0.0",
79
- "madge": "^6.0.0",
80
- "prettier": "^3.1.0",
81
- "sinon": "^16.0.0",
82
- "ts-lit-plugin": "^1.2.1",
83
- "tslib": "^2.4.0",
84
- "typescript": "^4.7.4"
61
+ "@types/mocha": "^10.0.10",
62
+ "@typescript-eslint/eslint-plugin": "^8.18.1",
63
+ "@typescript-eslint/parser": "^8.18.1",
64
+ "@web/dev-server": "^0.4.6",
65
+ "@web/test-runner": "^0.19.0",
66
+ "concurrently": "^9.1.0",
67
+ "eslint": "^9.17.0",
68
+ "eslint-config-prettier": "^9.1.0",
69
+ "eslint-plugin-html": "^8.1.2",
70
+ "eslint-plugin-import": "^2.31.0",
71
+ "eslint-plugin-lit": "^1.15.0",
72
+ "eslint-plugin-lit-a11y": "^4.1.4",
73
+ "eslint-plugin-no-only-tests": "^3.3.0",
74
+ "eslint-plugin-wc": "^2.2.0",
75
+ "form-data": "^4.0.1",
76
+ "husky": "^9.1.7",
77
+ "karma": "^6.4.4",
78
+ "lint-staged": "^15.2.11",
79
+ "madge": "^8.0.0",
80
+ "prettier": "^3.4.2",
81
+ "sinon": "^19.0.2",
82
+ "ts-lit-plugin": "^2.0.2",
83
+ "tslib": "^2.8.1",
84
+ "typescript": "^5.7.2"
85
85
  },
86
86
  "eslintConfig": {
87
87
  "extends": [
@@ -131,7 +131,6 @@ export class PaymentClients implements PaymentClientsInterface {
131
131
  this.environment = environment;
132
132
  }
133
133
 
134
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
135
134
  private async loadBraintreeScript(scriptName: string): Promise<void> {
136
135
  const extension = this.environment === HostingEnvironment.Production ? 'min.js' : 'js';
137
136
  const scriptWithSuffix = `${scriptName}.${extension}`;
@@ -20,7 +20,6 @@ export class ApplePayHandler implements ApplePayHandlerInterface {
20
20
  this.applePayClient = options.applePayClient;
21
21
  this.applePaySessionManager = options.applePaySessionManager;
22
22
 
23
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
23
  this.instance =
25
24
  options.instancePromisedSingleton ??
26
25
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -1,4 +1,3 @@
1
- /* eslint-disable @typescript-eslint/ban-types */
2
1
  import { LitElement, html, PropertyValues, TemplateResult } from 'lit';
3
2
  import { customElement, property, query } from 'lit/decorators.js';
4
3
 
@@ -1,4 +1,3 @@
1
- /* eslint-disable @typescript-eslint/ban-types */
2
1
  import { LitElement, html, css, CSSResult, TemplateResult, PropertyValues } from 'lit';
3
2
  import { customElement, property, query } from 'lit/decorators.js';
4
3
 
@@ -264,8 +263,9 @@ export class DonationForm extends LitElement {
264
263
  }
265
264
 
266
265
  const originalEvent = e.detail.originalEvent;
267
- this.donationInfo &&
266
+ if (this.donationInfo) {
268
267
  this.paymentFlowHandlers?.applePayHandler?.paymentInitiated(this.donationInfo, originalEvent);
268
+ }
269
269
  this.emitPaymentFlowStartedEvent();
270
270
  }
271
271
 
@@ -277,8 +277,9 @@ export class DonationForm extends LitElement {
277
277
  if (!this.donationInfoValid) {
278
278
  this.showInvalidDonationInfoAlert();
279
279
  } else {
280
- this.donationInfo &&
280
+ if (this.donationInfo) {
281
281
  this.paymentFlowHandlers?.googlePayHandler?.paymentInitiated(this.donationInfo);
282
+ }
282
283
  this.emitPaymentFlowStartedEvent();
283
284
  }
284
285
  }
@@ -418,8 +419,9 @@ export class DonationForm extends LitElement {
418
419
  return;
419
420
  }
420
421
  this.paypalButtonNeedsRender = false;
421
- this.donationInfo &&
422
- (await this.paymentFlowHandlers?.paypalHandler?.renderPayPalButton(this.donationInfo));
422
+ if (this.donationInfo) {
423
+ await this.paymentFlowHandlers?.paypalHandler?.renderPayPalButton(this.donationInfo);
424
+ }
423
425
  this.paymentSelector.showPaypalButton();
424
426
  }
425
427
 
@@ -463,8 +465,9 @@ export class DonationForm extends LitElement {
463
465
  this.flowHandlersConfigured = true;
464
466
  this.bindFlowListenerEvents();
465
467
  this.renderPayPalButtonIfNeeded();
466
- this.donationInfo &&
468
+ if (this.donationInfo) {
467
469
  this.paymentFlowHandlers?.paypalHandler?.updateDonationInfo(this.donationInfo);
470
+ }
468
471
  }
469
472
 
470
473
  private flowHandlerListenersBound = false;
@@ -1,5 +1,3 @@
1
- /* eslint-disable @typescript-eslint/no-empty-function */
2
- /* eslint-disable @typescript-eslint/ban-types */
3
1
  import { LitElement, html, TemplateResult, css, CSSResultGroup } from 'lit';
4
2
  import { customElement, property } from 'lit/decorators.js';
5
3
  import { DonationType } from '@internetarchive/donation-form-data-models';
@@ -1,4 +1,3 @@
1
- /* eslint-disable @typescript-eslint/ban-types */
2
1
  import { html } from 'lit';
3
2
  import { ModalConfig, ModalManagerInterface } from '@internetarchive/modal-manager';
4
3
  import { UpsellModalCTAMode } from '../modals/upsell-modal-content';
@@ -109,9 +109,8 @@ export class PayPalFlowHandler
109
109
  }
110
110
 
111
111
  async payPalPaymentStarted(
112
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
113
112
  dataSource: PayPalButtonDataSourceInterface,
114
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
113
+
115
114
  options: object,
116
115
  ): Promise<void> {
117
116
  this.emitter.emit('payPalPaymentStarted', dataSource, options);
@@ -216,9 +215,8 @@ export class PayPalFlowHandler
216
215
  }
217
216
 
218
217
  async payPalPaymentCancelled(
219
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
220
218
  dataSource: PayPalButtonDataSourceInterface,
221
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
219
+
222
220
  data: object,
223
221
  ): Promise<void> {
224
222
  this.emitter.emit('payPalPaymentCancelled', dataSource, data);
@@ -1,4 +1,3 @@
1
- /* eslint-disable @typescript-eslint/ban-types */
2
1
  import { ModalManagerInterface } from '@internetarchive/modal-manager';
3
2
 
4
3
  import {