@rebilly/instruments 3.1.0-beta.0 → 3.1.4-beta.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.
Files changed (165) hide show
  1. package/dist/index.js +88 -107
  2. package/dist/index.min.js +88 -0
  3. package/package.json +17 -6
  4. package/rollup.config.js +84 -0
  5. package/src/functions/mount/fetch-data.js +13 -1
  6. package/src/functions/mount/index.js +6 -42
  7. package/src/functions/mount/setup-framepay-theme.js +2 -2
  8. package/src/functions/mount/setup-options.js +3 -0
  9. package/src/functions/mount/setup-user-flow.js +49 -0
  10. package/src/functions/purchase.js +1 -1
  11. package/src/functions/setup.js +1 -1
  12. package/src/functions/show.spec.js +1 -1
  13. package/src/i18n/en.json +3 -0
  14. package/src/index.js +1 -61
  15. package/src/instance.js +65 -0
  16. package/src/{index.spec.js → instance.spec.js} +2 -1
  17. package/src/loader/index.js +21 -1
  18. package/src/storefront/models/ready-to-pay-model.js +13 -2
  19. package/src/storefront/plans.js +8 -4
  20. package/src/storefront/plans.spec.js +8 -2
  21. package/src/storefront/products.js +8 -4
  22. package/src/storefront/products.spec.js +8 -2
  23. package/src/storefront/ready-to-pay.js +5 -4
  24. package/src/style/components/button.js +1 -0
  25. package/src/style/components/loader.js +2 -1
  26. package/src/style/payment-instruments/payment-card.js +2 -1
  27. package/src/style/utils/remove-empty-null.js +9 -9
  28. package/src/style/vendor/postmate.js +13 -0
  29. package/src/style/views/confirmation.js +2 -1
  30. package/src/views/common/iframe/base-iframe.js +2 -0
  31. package/src/views/common/iframe/event-listeners.js +10 -0
  32. package/src/views/common/iframe/method-iframe.js +3 -1
  33. package/src/views/confirmation.js +1 -0
  34. package/src/views/method-selector/express-methods/{google-pay.js → index.js} +3 -2
  35. package/src/views/method-selector/mount-express-methods.js +6 -18
  36. package/src/views/result.js +1 -0
  37. package/tests/mocks/rebilly-instruments-mock.js +2 -2
  38. package/dist/events/base-event.js +0 -66
  39. package/dist/events/events.spec.js +0 -18
  40. package/dist/events/index.js +0 -22
  41. package/dist/functions/destroy.js +0 -34
  42. package/dist/functions/destroy.spec.js +0 -69
  43. package/dist/functions/mount/fetch-data.js +0 -187
  44. package/dist/functions/mount/fetch-data.spec.js +0 -189
  45. package/dist/functions/mount/index.js +0 -218
  46. package/dist/functions/mount/mount.spec.js +0 -64
  47. package/dist/functions/mount/setup-element.js +0 -40
  48. package/dist/functions/mount/setup-framepay-theme.js +0 -95
  49. package/dist/functions/mount/setup-framepay.js +0 -46
  50. package/dist/functions/mount/setup-i18n.js +0 -33
  51. package/dist/functions/mount/setup-options.js +0 -99
  52. package/dist/functions/mount/setup-options.spec.js +0 -66
  53. package/dist/functions/mount/setup-storefront.js +0 -34
  54. package/dist/functions/mount/setup-styles.js +0 -43
  55. package/dist/functions/on.js +0 -40
  56. package/dist/functions/on.spec.js +0 -55
  57. package/dist/functions/purchase.js +0 -158
  58. package/dist/functions/purchase.spec.js +0 -74
  59. package/dist/functions/setup.js +0 -85
  60. package/dist/functions/setup.spec.js +0 -87
  61. package/dist/functions/show.js +0 -55
  62. package/dist/functions/show.spec.js +0 -61
  63. package/dist/functions/update.js +0 -74
  64. package/dist/functions/update.spec.js +0 -86
  65. package/dist/i18n/en.json +0 -22
  66. package/dist/i18n/es.json +0 -22
  67. package/dist/i18n/i18n.spec.js +0 -22
  68. package/dist/i18n/index.js +0 -72
  69. package/dist/index.spec.js +0 -35
  70. package/dist/loader/index.js +0 -94
  71. package/dist/loader/loader.spec.js +0 -69
  72. package/dist/storefront/index.js +0 -73
  73. package/dist/storefront/invoices.js +0 -27
  74. package/dist/storefront/models/base-model.js +0 -18
  75. package/dist/storefront/models/invoice-model.js +0 -14
  76. package/dist/storefront/models/plan-model.js +0 -14
  77. package/dist/storefront/models/product-model.js +0 -14
  78. package/dist/storefront/models/ready-to-pay-model.js +0 -46
  79. package/dist/storefront/models/summary-model.js +0 -79
  80. package/dist/storefront/models/transaction-model.js +0 -31
  81. package/dist/storefront/payment-instruments.js +0 -47
  82. package/dist/storefront/payment-instruments.spec.js +0 -55
  83. package/dist/storefront/plans.js +0 -37
  84. package/dist/storefront/plans.spec.js +0 -64
  85. package/dist/storefront/products.js +0 -40
  86. package/dist/storefront/products.spec.js +0 -65
  87. package/dist/storefront/purchase.js +0 -43
  88. package/dist/storefront/purchase.spec.js +0 -48
  89. package/dist/storefront/ready-to-pay.js +0 -58
  90. package/dist/storefront/ready-to-pay.spec.js +0 -69
  91. package/dist/storefront/storefront.spec.js +0 -15
  92. package/dist/storefront/summary.js +0 -55
  93. package/dist/storefront/summary.spec.js +0 -124
  94. package/dist/storefront/transactions.js +0 -27
  95. package/dist/style/base/__snapshots__/theme.spec.js.snap +0 -227
  96. package/dist/style/base/default-theme.js +0 -804
  97. package/dist/style/base/index.js +0 -104
  98. package/dist/style/base/theme.js +0 -41
  99. package/dist/style/base/theme.spec.js +0 -19
  100. package/dist/style/browserslist.js +0 -8
  101. package/dist/style/components/address.js +0 -64
  102. package/dist/style/components/button.js +0 -87
  103. package/dist/style/components/divider.js +0 -48
  104. package/dist/style/components/forms/checkbox.js +0 -86
  105. package/dist/style/components/forms/field.js +0 -65
  106. package/dist/style/components/forms/form.js +0 -28
  107. package/dist/style/components/forms/input.js +0 -86
  108. package/dist/style/components/forms/label.js +0 -64
  109. package/dist/style/components/forms/select.js +0 -95
  110. package/dist/style/components/forms/validation.js +0 -81
  111. package/dist/style/components/icons.js +0 -22
  112. package/dist/style/components/index.js +0 -57
  113. package/dist/style/components/loader.js +0 -50
  114. package/dist/style/components/methods.js +0 -108
  115. package/dist/style/components/overlay.js +0 -33
  116. package/dist/style/helpers/index.js +0 -59
  117. package/dist/style/index.js +0 -50
  118. package/dist/style/payment-instruments/content.js +0 -17
  119. package/dist/style/payment-instruments/index.js +0 -20
  120. package/dist/style/payment-instruments/payment-card.js +0 -35
  121. package/dist/style/utils/border.js +0 -47
  122. package/dist/style/utils/color-values.js +0 -58
  123. package/dist/style/utils/remove-empty-null.js +0 -20
  124. package/dist/style/vendor/framepay.js +0 -37
  125. package/dist/style/vendor/postmate.js +0 -17
  126. package/dist/style/views/confirmation.js +0 -85
  127. package/dist/style/views/index.js +0 -29
  128. package/dist/style/views/method-selector.js +0 -20
  129. package/dist/style/views/modal.js +0 -93
  130. package/dist/style/views/result.js +0 -61
  131. package/dist/style/views/summary.js +0 -127
  132. package/dist/utils/add-dom-element.js +0 -26
  133. package/dist/utils/format-currency.js +0 -15
  134. package/dist/utils/has-valid-css-selector.js +0 -11
  135. package/dist/utils/index.js +0 -55
  136. package/dist/utils/is-dom-element.js +0 -10
  137. package/dist/utils/process-property-as-dom-element.js +0 -38
  138. package/dist/utils/sleep.js +0 -10
  139. package/dist/views/__snapshots__/summary.spec.js.snap +0 -246
  140. package/dist/views/common/iframe/base-iframe.js +0 -59
  141. package/dist/views/common/iframe/event-listeners.js +0 -50
  142. package/dist/views/common/iframe/index.js +0 -19
  143. package/dist/views/common/iframe/method-iframe.js +0 -33
  144. package/dist/views/common/iframe/modal-iframe.js +0 -84
  145. package/dist/views/common/iframe/view-iframe.js +0 -31
  146. package/dist/views/common/render-utilities.js +0 -11
  147. package/dist/views/confirmation.js +0 -92
  148. package/dist/views/method-selector/__snapshots__/method-selector.spec.js.snap +0 -3
  149. package/dist/views/method-selector/express-methods/apple-pay.js +0 -92
  150. package/dist/views/method-selector/express-methods/google-pay.js +0 -31
  151. package/dist/views/method-selector/express-methods/paypal.js +0 -19
  152. package/dist/views/method-selector/generate-digital-wallet.js +0 -68
  153. package/dist/views/method-selector/generate-digital-wallet.spec.js +0 -135
  154. package/dist/views/method-selector/get-method-data.js +0 -25
  155. package/dist/views/method-selector/get-payment-methods.js +0 -66
  156. package/dist/views/method-selector/get-payment-methods.spec.js +0 -46
  157. package/dist/views/method-selector/index.js +0 -122
  158. package/dist/views/method-selector/method-selector.spec.js +0 -124
  159. package/dist/views/method-selector/mount-express-methods.js +0 -69
  160. package/dist/views/method-selector/mount-methods.js +0 -74
  161. package/dist/views/modal.js +0 -88
  162. package/dist/views/result.js +0 -40
  163. package/dist/views/summary.js +0 -215
  164. package/dist/views/summary.spec.js +0 -134
  165. package/src/views/method-selector/express-methods/paypal.js +0 -7
@@ -1,92 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.mountConfirmation = mountConfirmation;
7
- exports.baseConfirmationHTML = void 0;
8
-
9
- var _purchase = require("../functions/purchase");
10
-
11
- var _setup = require("../functions/setup");
12
-
13
- var _iframe = require("./common/iframe");
14
-
15
- var _renderUtilities = require("./common/render-utilities");
16
-
17
- var _methodSelector = require("./method-selector");
18
-
19
- var _summary = require("./summary");
20
-
21
- const baseConfirmationHTML = '<div class="rebilly-instruments-confirmation"></div>';
22
- exports.baseConfirmationHTML = baseConfirmationHTML;
23
-
24
- async function mountConfirmation({
25
- payload: instrument,
26
- state
27
- }) {
28
- if (instrument.billingAddress && state.summary && state.data.isPurchase) {
29
- (0, _summary.updateSummary)({
30
- state,
31
- instrument
32
- });
33
- }
34
-
35
- (0, _renderUtilities.replaceContent)(state.form, baseConfirmationHTML);
36
- state.loader.startLoading({
37
- id: 'confirmation'
38
- });
39
- const container = document.querySelector('.rebilly-instruments-confirmation');
40
- const {
41
- paymentMethodsUrl
42
- } = state.options._computed;
43
- const model = {
44
- options: state.options,
45
- mainStyle: state.mainStyle,
46
- instrument
47
- };
48
- const name = 'rebilly-instruments-confirmation';
49
- const iframe = await new _iframe.ViewIframe({
50
- name,
51
- url: `${paymentMethodsUrl}/confirmation`,
52
- container,
53
- model
54
- });
55
- iframe.bindEventListeners({
56
- loader: state.loader
57
- });
58
- iframe.component.on(`${name}-confirm-purchase`, confirmedInstrument => {
59
- (0, _purchase.purchase)({
60
- state,
61
- payload: confirmedInstrument
62
- });
63
- });
64
- iframe.component.on(`${name}-confirm-setup`, confirmedInstrument => {
65
- (0, _setup.setup)({
66
- state,
67
- payload: confirmedInstrument
68
- });
69
- });
70
- iframe.component.on('choose-another-method', () => {
71
- state.iframeComponents = state.iframeComponents.filter(item => {
72
- if (item.name === iframe.name) {
73
- item.destroy();
74
- return false;
75
- }
76
-
77
- return true;
78
- });
79
-
80
- if (state.data.isPurchase) {
81
- (0, _summary.updateSummary)({
82
- state
83
- });
84
- }
85
-
86
- (0, _methodSelector.updateMethodSelector)({
87
- state,
88
- mainStyle: state.mainStyle
89
- });
90
- });
91
- state.iframeComponents.push(iframe);
92
- }
@@ -1,3 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`Summary component should inject the proper HTML for express methods 1`] = `null`;
@@ -1,92 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = mountApplePay;
7
-
8
- var _events = _interopRequireDefault(require("../../../events"));
9
-
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
- const browserIsSafari = () => window.ApplePaySession;
13
-
14
- function mountApplePay({
15
- state,
16
- METHOD_ID,
17
- METHOD_TYPE,
18
- EXPRESS_METHODS,
19
- EXPRESS_METHODS_CONTAINER
20
- }) {
21
- const container = document.querySelector(`.rebilly-instruments-${METHOD_ID}-method`);
22
- const digitalWallet = state.options.digitalWallet.applePay;
23
-
24
- function mountApplePayButton() {
25
- if (!container.children.length) {
26
- Rebilly.applePay.mount(`.rebilly-instruments-${METHOD_ID}-method`);
27
- }
28
-
29
- state.loader.stopLoading({
30
- id: `${METHOD_TYPE}-express`
31
- });
32
- } // Hack: The correct way to do this is to accept the options via the framepay package
33
- // Will remove once these options are added to framepay
34
-
35
-
36
- function updateBtnStyling() {
37
- const applePayButton = document.querySelector('#rebilly-apple-pay-button');
38
- applePayButton.style.margin = '0px';
39
- applePayButton.style.width = '100%';
40
- applePayButton.style.height = digitalWallet.applePayDisplayOptions.buttonHeight;
41
- }
42
-
43
- if (!browserIsSafari()) {
44
- if (EXPRESS_METHODS.length === 1) {
45
- EXPRESS_METHODS_CONTAINER.parentNode.style.display = 'none';
46
- }
47
-
48
- state.loader.stopLoading({
49
- id: `${METHOD_TYPE}-express`
50
- });
51
- container.style.display = 'none';
52
- return;
53
- }
54
-
55
- container.style.height = digitalWallet.applePayDisplayOptions.buttonHeight;
56
-
57
- if (!Rebilly.initialized) {
58
- Rebilly.initialize({
59
- publishableKey: state.options.publishableKey,
60
- organizationId: state.options.organizationId,
61
- digitalWallet
62
- });
63
- } else {
64
- mountApplePayButton();
65
- updateBtnStyling();
66
- }
67
-
68
- Rebilly.on('ready', () => {
69
- mountApplePayButton();
70
- updateBtnStyling();
71
- });
72
- Rebilly.on('token-ready', token => {
73
- const instrumentReadyPayload = {
74
- websiteId: state.options.websiteId,
75
- items: state.options.items,
76
- paymentInstruction: {
77
- token: token.id
78
- },
79
- billingAddress: token.billingAddress,
80
- _raw: token
81
- };
82
-
83
- if (!token.shippingAddress) {
84
- instrumentReadyPayload.deliveryAddress = token.shippingAddress;
85
- }
86
-
87
- _events.default.instrumentReady.dispatch(instrumentReadyPayload);
88
- });
89
- Rebilly.on('error', error => {
90
- console.error(error);
91
- });
92
- }
@@ -1,31 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = mountGooglePay;
7
-
8
- var _iframe = require("../../common/iframe");
9
-
10
- async function mountGooglePay({
11
- state,
12
- METHOD_ID
13
- }) {
14
- const container = document.querySelector(`.rebilly-instruments-${METHOD_ID}-method`);
15
- const {
16
- paymentMethodsUrl
17
- } = state.options._computed;
18
- const model = {
19
- options: state.options
20
- };
21
- const iframe = await new _iframe.MethodIframe({
22
- name: METHOD_ID,
23
- url: `${paymentMethodsUrl}/${METHOD_ID}`,
24
- container,
25
- model
26
- });
27
- iframe.bindEventListeners({
28
- loader: state.loader
29
- });
30
- state.iframeComponents.push(iframe);
31
- }
@@ -1,19 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = mountPaypal;
7
-
8
- async function mountPaypal({
9
- state,
10
- METHOD_ID,
11
- METHOD_TYPE
12
- }) {
13
- console.log('PayPal - work in progress');
14
- const container = document.querySelector(`.rebilly-instruments-${METHOD_ID}-method`);
15
- container.style.display = 'none';
16
- state.loader.stopLoading({
17
- id: `${METHOD_TYPE}-express`
18
- });
19
- }
@@ -1,68 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.generateDigitalWallet = generateDigitalWallet;
7
-
8
- var _getMethodData = require("./get-method-data");
9
-
10
- function generateDigitalWallet({
11
- state,
12
- EXPRESS_METHODS
13
- }) {
14
- var _state$data;
15
-
16
- const output = {};
17
- const {
18
- paymentInstruments
19
- } = state.options;
20
- const transactionData = {
21
- countryCode: state.options.countryCode,
22
- label: state.options.websiteId
23
- };
24
-
25
- if ((_state$data = state.data) !== null && _state$data !== void 0 && _state$data.amountAndCurrency) {
26
- const {
27
- amount,
28
- currency
29
- } = state.data.amountAndCurrency;
30
- transactionData.amount = amount;
31
- transactionData.currency = currency;
32
- }
33
-
34
- EXPRESS_METHODS.forEach(method => {
35
- var _method$feature, _method$feature2;
36
-
37
- const {
38
- METHOD_TYPE
39
- } = (0, _getMethodData.getMethodData)(method);
40
-
41
- if (((_method$feature = method.feature) === null || _method$feature === void 0 ? void 0 : _method$feature.name) === 'Google Pay') {
42
- output[METHOD_TYPE] = {
43
- transactionData,
44
- merchantConfig: {
45
- merchantName: method.feature.merchantName,
46
- merchantOrigin: method.feature.merchantOrigin
47
- },
48
- googlePayDisplayOptions: paymentInstruments.googlePay.displayOptions
49
- };
50
- }
51
-
52
- if (((_method$feature2 = method.feature) === null || _method$feature2 === void 0 ? void 0 : _method$feature2.name) === 'Apple Pay') {
53
- var _paymentInstruments$a, _paymentInstruments$a2;
54
-
55
- output[METHOD_TYPE] = {
56
- transactionData,
57
- merchantConfig: {
58
- merchantName: (_paymentInstruments$a = paymentInstruments.applePay) === null || _paymentInstruments$a === void 0 ? void 0 : (_paymentInstruments$a2 = _paymentInstruments$a.merchantConfig) === null || _paymentInstruments$a2 === void 0 ? void 0 : _paymentInstruments$a2.merchantName,
59
- // Apple Pay code cannot run in an iframe, and the merchant origin must be
60
- // registered as a merchant domain, so we can just send the current URL.
61
- merchantOrigin: window.location.hostname
62
- },
63
- applePayDisplayOptions: paymentInstruments.applePay.displayOptions
64
- };
65
- }
66
- });
67
- return output;
68
- }
@@ -1,135 +0,0 @@
1
- "use strict";
2
-
3
- var _generateDigitalWallet = require("./generate-digital-wallet");
4
-
5
- var _readyToPayModel = _interopRequireDefault(require("../../storefront/models/ready-to-pay-model"));
6
-
7
- var _summaryModel = _interopRequireDefault(require("../../storefront/models/summary-model"));
8
-
9
- var _fetchData = require("../../functions/mount/fetch-data");
10
-
11
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
-
13
- describe('generateDigitalWallet', () => {
14
- class TestInstance {
15
- constructor({
16
- options = {}
17
- } = {}) {
18
- this.options = options;
19
- this.data = new _fetchData.DataInstance({
20
- state: {
21
- options
22
- },
23
- previewPurchase: {
24
- total: 1,
25
- currency: 'USD'
26
- }
27
- });
28
- }
29
-
30
- }
31
-
32
- const summary = new _summaryModel.default({
33
- currency: 'USD',
34
- total: 1
35
- });
36
- const options = {
37
- websiteId: 'test-website-id',
38
- countryCode: 'US',
39
- paymentInstruments: {
40
- googlePay: {
41
- displayOptions: {
42
- buttonColor: 'black',
43
- buttonType: 'short',
44
- buttonHeight: '44px'
45
- }
46
- },
47
- applePay: {
48
- displayOptions: {
49
- buttonColor: 'black',
50
- buttonType: 'buy',
51
- buttonHeight: '44px'
52
- },
53
- merchantConfig: {
54
- merchantName: 'Test Store Name'
55
- }
56
- }
57
- }
58
- };
59
- it('should generate the correct digital wallet config for Google pay', () => {
60
- const expressMethods = [new _readyToPayModel.default({
61
- method: 'payment-card',
62
- feature: {
63
- name: 'Google Pay',
64
- merchantName: 'google-pay-merchant-name',
65
- merchantOrigin: 'google-pay-merchant-origin'
66
- },
67
- brands: ['Visa']
68
- })];
69
- const output = (0, _generateDigitalWallet.generateDigitalWallet)({
70
- state: new TestInstance({
71
- options
72
- }),
73
- EXPRESS_METHODS: expressMethods,
74
- summary
75
- });
76
- const expectedOutput = {
77
- googlePay: {
78
- transactionData: {
79
- amount: 1,
80
- currency: 'USD',
81
- countryCode: 'US',
82
- label: 'test-website-id'
83
- },
84
- merchantConfig: {
85
- merchantName: 'google-pay-merchant-name',
86
- merchantOrigin: 'google-pay-merchant-origin'
87
- },
88
- googlePayDisplayOptions: {
89
- buttonColor: 'black',
90
- buttonType: 'short',
91
- buttonHeight: '44px'
92
- }
93
- }
94
- };
95
- expect(output).toMatchObject(expectedOutput);
96
- });
97
- it('should generate the correct digital wallet config for Apple pay', () => {
98
- delete window.location;
99
- window.location = new URL('https://rebilly-apple-pay-test-tunnel.ngrok.io/');
100
- const expressMethods = [new _readyToPayModel.default({
101
- method: 'payment-card',
102
- feature: {
103
- name: 'Apple Pay'
104
- },
105
- brands: ['Visa']
106
- })];
107
- const output = (0, _generateDigitalWallet.generateDigitalWallet)({
108
- state: new TestInstance({
109
- options
110
- }),
111
- EXPRESS_METHODS: expressMethods,
112
- summary
113
- });
114
- const expectedOutput = {
115
- applePay: {
116
- transactionData: {
117
- amount: 1,
118
- currency: 'USD',
119
- countryCode: 'US',
120
- label: 'test-website-id'
121
- },
122
- merchantConfig: {
123
- merchantName: 'Test Store Name',
124
- merchantOrigin: 'rebilly-apple-pay-test-tunnel.ngrok.io'
125
- },
126
- applePayDisplayOptions: {
127
- buttonColor: 'black',
128
- buttonType: 'buy',
129
- buttonHeight: '44px'
130
- }
131
- }
132
- };
133
- expect(output).toMatchObject(expectedOutput);
134
- });
135
- });
@@ -1,25 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.getMethodData = void 0;
7
-
8
- var _lodash = _interopRequireDefault(require("lodash.kebabcase"));
9
-
10
- var _lodash2 = _interopRequireDefault(require("lodash.camelcase"));
11
-
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
- const getMethodData = method => {
15
- var _method$feature, _method$feature2;
16
-
17
- const METHOD_ID = (0, _lodash.default)(((_method$feature = method.feature) === null || _method$feature === void 0 ? void 0 : _method$feature.name) || method.method);
18
- const METHOD_TYPE = (0, _lodash2.default)(((_method$feature2 = method.feature) === null || _method$feature2 === void 0 ? void 0 : _method$feature2.name) || method.method).replace('-', '');
19
- return {
20
- METHOD_ID,
21
- METHOD_TYPE
22
- };
23
- };
24
-
25
- exports.getMethodData = getMethodData;
@@ -1,66 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.getPaymentMethods = getPaymentMethods;
7
-
8
- var _getMethodData = require("./get-method-data");
9
-
10
- /* eslint-disable no-unused-expressions, arrow-body-style */
11
- const SUPPORTED_EXPRESS_METHODS = ['Google Pay', 'Apple Pay', 'paypal'];
12
- const SUPPORTED_METHODS = ['payment-card'];
13
-
14
- const isExpressMethod = ({
15
- method,
16
- feature
17
- }) => {
18
- return SUPPORTED_EXPRESS_METHODS.includes(method) || SUPPORTED_EXPRESS_METHODS.includes(feature === null || feature === void 0 ? void 0 : feature.name);
19
- };
20
-
21
- const isSupportedMethod = ({
22
- method
23
- }) => {
24
- return SUPPORTED_METHODS.includes(method);
25
- }; // TODO: just loader is used. We could simplify signature
26
-
27
-
28
- function getPaymentMethods({
29
- state
30
- }) {
31
- const result = {
32
- EXPRESS_METHODS: [],
33
- METHODS: []
34
- };
35
- state.data.readyToPay.forEach(method => {
36
- if (isExpressMethod(method)) {
37
- const {
38
- METHOD_TYPE
39
- } = (0, _getMethodData.getMethodData)(method); // Add loader entry per express method
40
-
41
- state.loader.startLoading({
42
- id: `${METHOD_TYPE}-express`
43
- });
44
- result.EXPRESS_METHODS.push(method);
45
- } else if (isSupportedMethod(method)) {
46
- // Add loader entry per method
47
- state.loader.startLoading({
48
- id: method.method
49
- });
50
- result.METHODS.push(method);
51
- }
52
- });
53
-
54
- if (!window.ApplePaySession) {
55
- result.EXPRESS_METHODS = result.EXPRESS_METHODS.filter(method => {
56
- var _method$feature;
57
-
58
- return (method === null || method === void 0 ? void 0 : (_method$feature = method.feature) === null || _method$feature === void 0 ? void 0 : _method$feature.name) !== 'Apple Pay';
59
- });
60
- state.loader.stopLoading({
61
- id: 'applePay-express'
62
- });
63
- }
64
-
65
- return result;
66
- }
@@ -1,46 +0,0 @@
1
- "use strict";
2
-
3
- var _getPaymentMethods = require("./get-payment-methods");
4
-
5
- var _readyToPayModel = _interopRequireDefault(require("../../storefront/models/ready-to-pay-model"));
6
-
7
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
-
9
- class TestInstance {
10
- constructor() {
11
- this.loader = {
12
- startLoading: jest.fn(),
13
- stopLoading: jest.fn()
14
- };
15
- this.data = {
16
- readyToPay: [new _readyToPayModel.default({
17
- method: 'payment-card',
18
- feature: {
19
- name: 'Google Pay',
20
- merchantName: 'google-pay-merchant-name',
21
- merchantOrigin: 'google-pay-merchant-origin'
22
- },
23
- brands: ['Visa'],
24
- filters: []
25
- }), new _readyToPayModel.default({
26
- method: 'bitcoin',
27
- filters: []
28
- }), new _readyToPayModel.default({
29
- method: 'payment-card',
30
- brands: ['Visa'],
31
- filters: []
32
- })]
33
- };
34
- }
35
-
36
- }
37
-
38
- it('should only return the allowed methods', () => {
39
- const instance = new TestInstance();
40
- const results = (0, _getPaymentMethods.getPaymentMethods)({
41
- state: instance
42
- });
43
- expect(results.hasOwnProperty('EXPRESS_METHODS')).toEqual(true);
44
- expect(results['EXPRESS_METHODS'].length).toEqual(1);
45
- expect(results['METHODS'].length).toEqual(1);
46
- });