@rebilly/instruments 3.0.0-beta.0 → 3.1.2-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.
- package/dist/index.js +88 -107
- package/dist/index.min.js +88 -0
- package/package.json +17 -6
- package/rollup.config.js +84 -0
- package/src/functions/mount/fetch-data.js +13 -1
- package/src/functions/mount/index.js +6 -42
- package/src/functions/mount/setup-framepay-theme.js +2 -2
- package/src/functions/mount/setup-options.js +3 -0
- package/src/functions/mount/setup-user-flow.js +49 -0
- package/src/functions/purchase.js +1 -1
- package/src/functions/setup.js +1 -1
- package/src/functions/show.spec.js +1 -1
- package/src/i18n/en.json +3 -0
- package/src/i18n/index.js +1 -1
- package/src/index.js +1 -61
- package/src/instance.js +65 -0
- package/src/{index.spec.js → instance.spec.js} +2 -1
- package/src/loader/index.js +21 -1
- package/src/storefront/models/ready-to-pay-model.js +13 -2
- package/src/storefront/plans.js +8 -4
- package/src/storefront/plans.spec.js +8 -2
- package/src/storefront/products.js +8 -4
- package/src/storefront/products.spec.js +8 -2
- package/src/storefront/ready-to-pay.js +5 -4
- package/src/style/base/__snapshots__/theme.spec.js.snap +34 -2
- package/src/style/base/default-theme.js +106 -3
- package/src/style/components/button.js +17 -1
- package/src/style/components/forms/label.js +0 -5
- package/src/style/components/loader.js +2 -1
- package/src/style/payment-instruments/payment-card.js +2 -1
- package/src/style/utils/remove-empty-null.js +9 -9
- package/src/style/vendor/postmate.js +13 -0
- package/src/style/views/confirmation.js +2 -1
- package/src/views/common/iframe/base-iframe.js +2 -0
- package/src/views/common/iframe/event-listeners.js +10 -0
- package/src/views/common/iframe/method-iframe.js +3 -1
- package/src/views/confirmation.js +1 -0
- package/src/views/method-selector/express-methods/{google-pay.js → index.js} +3 -2
- package/src/views/method-selector/mount-express-methods.js +6 -18
- package/src/views/result.js +1 -0
- package/tests/mocks/rebilly-instruments-mock.js +2 -2
- package/dist/events/base-event.js +0 -66
- package/dist/events/events.spec.js +0 -18
- package/dist/events/index.js +0 -22
- package/dist/functions/destroy.js +0 -34
- package/dist/functions/destroy.spec.js +0 -69
- package/dist/functions/mount/fetch-data.js +0 -187
- package/dist/functions/mount/fetch-data.spec.js +0 -189
- package/dist/functions/mount/index.js +0 -218
- package/dist/functions/mount/mount.spec.js +0 -64
- package/dist/functions/mount/setup-element.js +0 -40
- package/dist/functions/mount/setup-framepay-theme.js +0 -95
- package/dist/functions/mount/setup-framepay.js +0 -46
- package/dist/functions/mount/setup-i18n.js +0 -33
- package/dist/functions/mount/setup-options.js +0 -99
- package/dist/functions/mount/setup-options.spec.js +0 -66
- package/dist/functions/mount/setup-storefront.js +0 -34
- package/dist/functions/mount/setup-styles.js +0 -43
- package/dist/functions/on.js +0 -40
- package/dist/functions/on.spec.js +0 -55
- package/dist/functions/purchase.js +0 -158
- package/dist/functions/purchase.spec.js +0 -74
- package/dist/functions/setup.js +0 -85
- package/dist/functions/setup.spec.js +0 -87
- package/dist/functions/show.js +0 -55
- package/dist/functions/show.spec.js +0 -61
- package/dist/functions/update.js +0 -74
- package/dist/functions/update.spec.js +0 -86
- package/dist/i18n/en.json +0 -22
- package/dist/i18n/es.json +0 -22
- package/dist/i18n/i18n.spec.js +0 -22
- package/dist/i18n/index.js +0 -72
- package/dist/index.spec.js +0 -35
- package/dist/loader/index.js +0 -94
- package/dist/loader/loader.spec.js +0 -69
- package/dist/storefront/index.js +0 -73
- package/dist/storefront/invoices.js +0 -27
- package/dist/storefront/models/base-model.js +0 -18
- package/dist/storefront/models/invoice-model.js +0 -14
- package/dist/storefront/models/plan-model.js +0 -14
- package/dist/storefront/models/product-model.js +0 -14
- package/dist/storefront/models/ready-to-pay-model.js +0 -46
- package/dist/storefront/models/summary-model.js +0 -79
- package/dist/storefront/models/transaction-model.js +0 -31
- package/dist/storefront/payment-instruments.js +0 -47
- package/dist/storefront/payment-instruments.spec.js +0 -55
- package/dist/storefront/plans.js +0 -37
- package/dist/storefront/plans.spec.js +0 -64
- package/dist/storefront/products.js +0 -40
- package/dist/storefront/products.spec.js +0 -65
- package/dist/storefront/purchase.js +0 -43
- package/dist/storefront/purchase.spec.js +0 -48
- package/dist/storefront/ready-to-pay.js +0 -58
- package/dist/storefront/ready-to-pay.spec.js +0 -69
- package/dist/storefront/storefront.spec.js +0 -15
- package/dist/storefront/summary.js +0 -55
- package/dist/storefront/summary.spec.js +0 -124
- package/dist/storefront/transactions.js +0 -27
- package/dist/style/base/__snapshots__/theme.spec.js.snap +0 -195
- package/dist/style/base/default-theme.js +0 -699
- package/dist/style/base/index.js +0 -104
- package/dist/style/base/theme.js +0 -41
- package/dist/style/base/theme.spec.js +0 -19
- package/dist/style/browserslist.js +0 -8
- package/dist/style/components/address.js +0 -64
- package/dist/style/components/button.js +0 -71
- package/dist/style/components/divider.js +0 -48
- package/dist/style/components/forms/checkbox.js +0 -86
- package/dist/style/components/forms/field.js +0 -65
- package/dist/style/components/forms/form.js +0 -28
- package/dist/style/components/forms/input.js +0 -86
- package/dist/style/components/forms/label.js +0 -69
- package/dist/style/components/forms/select.js +0 -95
- package/dist/style/components/forms/validation.js +0 -81
- package/dist/style/components/icons.js +0 -22
- package/dist/style/components/index.js +0 -57
- package/dist/style/components/loader.js +0 -50
- package/dist/style/components/methods.js +0 -108
- package/dist/style/components/overlay.js +0 -33
- package/dist/style/helpers/index.js +0 -59
- package/dist/style/index.js +0 -50
- package/dist/style/payment-instruments/content.js +0 -17
- package/dist/style/payment-instruments/index.js +0 -20
- package/dist/style/payment-instruments/payment-card.js +0 -35
- package/dist/style/utils/border.js +0 -47
- package/dist/style/utils/color-values.js +0 -58
- package/dist/style/utils/remove-empty-null.js +0 -20
- package/dist/style/vendor/framepay.js +0 -37
- package/dist/style/vendor/postmate.js +0 -17
- package/dist/style/views/confirmation.js +0 -85
- package/dist/style/views/index.js +0 -29
- package/dist/style/views/method-selector.js +0 -20
- package/dist/style/views/modal.js +0 -93
- package/dist/style/views/result.js +0 -61
- package/dist/style/views/summary.js +0 -127
- package/dist/utils/add-dom-element.js +0 -26
- package/dist/utils/format-currency.js +0 -15
- package/dist/utils/has-valid-css-selector.js +0 -11
- package/dist/utils/index.js +0 -55
- package/dist/utils/is-dom-element.js +0 -10
- package/dist/utils/process-property-as-dom-element.js +0 -38
- package/dist/utils/sleep.js +0 -10
- package/dist/views/__snapshots__/summary.spec.js.snap +0 -246
- package/dist/views/common/iframe/base-iframe.js +0 -59
- package/dist/views/common/iframe/event-listeners.js +0 -50
- package/dist/views/common/iframe/index.js +0 -19
- package/dist/views/common/iframe/method-iframe.js +0 -33
- package/dist/views/common/iframe/modal-iframe.js +0 -84
- package/dist/views/common/iframe/view-iframe.js +0 -31
- package/dist/views/common/render-utilities.js +0 -11
- package/dist/views/confirmation.js +0 -92
- package/dist/views/method-selector/__snapshots__/method-selector.spec.js.snap +0 -3
- package/dist/views/method-selector/express-methods/apple-pay.js +0 -92
- package/dist/views/method-selector/express-methods/google-pay.js +0 -31
- package/dist/views/method-selector/express-methods/paypal.js +0 -19
- package/dist/views/method-selector/generate-digital-wallet.js +0 -68
- package/dist/views/method-selector/generate-digital-wallet.spec.js +0 -135
- package/dist/views/method-selector/get-method-data.js +0 -25
- package/dist/views/method-selector/get-payment-methods.js +0 -66
- package/dist/views/method-selector/get-payment-methods.spec.js +0 -46
- package/dist/views/method-selector/index.js +0 -122
- package/dist/views/method-selector/method-selector.spec.js +0 -124
- package/dist/views/method-selector/mount-express-methods.js +0 -69
- package/dist/views/method-selector/mount-methods.js +0 -74
- package/dist/views/modal.js +0 -88
- package/dist/views/result.js +0 -40
- package/dist/views/summary.js +0 -215
- package/dist/views/summary.spec.js +0 -134
- package/src/views/method-selector/express-methods/paypal.js +0 -7
package/dist/i18n/en.json
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"en": {
|
|
3
|
-
"summary": {
|
|
4
|
-
"subTotal": "Sub Total",
|
|
5
|
-
"discounts": "Discounts",
|
|
6
|
-
"taxes": "Taxes",
|
|
7
|
-
"shipping": "Shipping",
|
|
8
|
-
"total": "Total"
|
|
9
|
-
},
|
|
10
|
-
"form": {
|
|
11
|
-
"expressCheckout": "Express checkout",
|
|
12
|
-
"or": "Or",
|
|
13
|
-
"popupOverlayText": "Click here to show popup window",
|
|
14
|
-
"error": {
|
|
15
|
-
"noPaymentMethods": "No payment methods available for this transaction, please contact support."
|
|
16
|
-
}
|
|
17
|
-
},
|
|
18
|
-
"paymentMethods": {
|
|
19
|
-
"payment-card": "Payment card"
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
}
|
package/dist/i18n/es.json
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"es": {
|
|
3
|
-
"summary": {
|
|
4
|
-
"subTotal": "Sub Total",
|
|
5
|
-
"discounts": "Descuentos",
|
|
6
|
-
"taxes": "Impuestos",
|
|
7
|
-
"shipping": "Envío",
|
|
8
|
-
"total": "Total"
|
|
9
|
-
},
|
|
10
|
-
"form": {
|
|
11
|
-
"expressCheckout": "Chequeo rápido",
|
|
12
|
-
"or": "O pague con",
|
|
13
|
-
"popupOverlayText": "Haga clic aquí para mostrar la ventana emergente",
|
|
14
|
-
"error": {
|
|
15
|
-
"noPaymentMethods": "No hay métodos de pago disponibles para esta transacción, por favor, póngase en contacto con el servicio de asistencia."
|
|
16
|
-
}
|
|
17
|
-
},
|
|
18
|
-
"paymentMethods": {
|
|
19
|
-
"payment-card": "Tarjeta de crédito"
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
}
|
package/dist/i18n/i18n.spec.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _index = require("./index");
|
|
4
|
-
|
|
5
|
-
describe('i18n Class', () => {
|
|
6
|
-
const canTranslate = document.createElement('div');
|
|
7
|
-
canTranslate.innerHTML = 'Discounts';
|
|
8
|
-
canTranslate.setAttribute('data-rebilly-i18n', 'summary.discounts');
|
|
9
|
-
const canNotTranslate = document.createElement('div');
|
|
10
|
-
canNotTranslate.innerHTML = 'Untouched';
|
|
11
|
-
canNotTranslate.setAttribute('data-rebilly-i18n', 'does.not.exist');
|
|
12
|
-
document.body.append(canTranslate);
|
|
13
|
-
document.body.append(canNotTranslate);
|
|
14
|
-
it('can translate element with proper data attribute and skip wrong translation path or languages', () => {
|
|
15
|
-
const translate = new _index.Translate();
|
|
16
|
-
translate.init('es-US');
|
|
17
|
-
translate.translateItems();
|
|
18
|
-
const [translated, untouched] = document.querySelectorAll('[data-rebilly-i18n]');
|
|
19
|
-
expect(translated.innerHTML).toEqual('Descuentos');
|
|
20
|
-
expect(untouched.innerHTML).toEqual('Untouched');
|
|
21
|
-
});
|
|
22
|
-
});
|
package/dist/i18n/index.js
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.Translate = void 0;
|
|
7
|
-
|
|
8
|
-
var _lodash = _interopRequireDefault(require("lodash.merge"));
|
|
9
|
-
|
|
10
|
-
var _en = _interopRequireDefault(require("./en.json"));
|
|
11
|
-
|
|
12
|
-
var _es = _interopRequireDefault(require("./es.json"));
|
|
13
|
-
|
|
14
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
|
-
class Translate {
|
|
17
|
-
constructor() {
|
|
18
|
-
this.locale = '';
|
|
19
|
-
this.items = [];
|
|
20
|
-
this.languages = {};
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
init(locale, messages) {
|
|
24
|
-
this.items = document.querySelectorAll('[data-rebilly-i18n]');
|
|
25
|
-
this.locale = this.getLocale(locale);
|
|
26
|
-
this.languages = (0, _lodash.default)({ ..._en.default,
|
|
27
|
-
..._es.default
|
|
28
|
-
}, messages);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
translateItems() {
|
|
32
|
-
this.items = document.querySelectorAll('[data-rebilly-i18n]');
|
|
33
|
-
|
|
34
|
-
if (this.locale in this.languages) {
|
|
35
|
-
return this.items.forEach(item => {
|
|
36
|
-
const translate = this.getTranslation(this.languages[this.locale], item.dataset.rebillyI18n);
|
|
37
|
-
|
|
38
|
-
if (translate) {
|
|
39
|
-
item.innerHTML = translate;
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
return false;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
updateTranslationsToNewLocale(newLocale) {
|
|
48
|
-
this.locale = newLocale;
|
|
49
|
-
this.translateItems();
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
getLocale(locale = this.locale) {
|
|
53
|
-
if (!locale.includes('-') || locale in this.languages) {
|
|
54
|
-
return locale;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
locale = locale.replace(/[-._]\w+$/gi, '');
|
|
58
|
-
return this.getLocale(locale);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
translateItem(item) {
|
|
62
|
-
const locale = this.getLocale();
|
|
63
|
-
return this.getTranslation(this.languages[locale], item.dataset.rebillyI18n);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
getTranslation(lan = this.locale, prop) {
|
|
67
|
-
return prop.split('.').reduce((acc, val) => acc === null || acc === void 0 ? void 0 : acc[val], lan);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
exports.Translate = Translate;
|
package/dist/index.spec.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _index = _interopRequireWildcard(require("./index"));
|
|
4
|
-
|
|
5
|
-
var _asyncUtilities = require("../tests/async-utilities");
|
|
6
|
-
|
|
7
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
8
|
-
|
|
9
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
10
|
-
|
|
11
|
-
describe('RebillyInstruments instance', () => {
|
|
12
|
-
let rebillyInstruments;
|
|
13
|
-
beforeEach(() => {
|
|
14
|
-
rebillyInstruments = _index.default;
|
|
15
|
-
});
|
|
16
|
-
it('should have default export as instance of class', () => {
|
|
17
|
-
expect(_index.default).toBeInstanceOf(_index.RebillyInstrumentsInstance);
|
|
18
|
-
});
|
|
19
|
-
it('should be mountable', async () => {
|
|
20
|
-
jest.spyOn(rebillyInstruments, 'mount');
|
|
21
|
-
document.body.innerHTML = `
|
|
22
|
-
<div class="form-selector"></div>
|
|
23
|
-
<div class="summary-selector"></div>
|
|
24
|
-
`;
|
|
25
|
-
const options = {
|
|
26
|
-
form: '.form-selector',
|
|
27
|
-
summary: '.summary-selector',
|
|
28
|
-
items: []
|
|
29
|
-
};
|
|
30
|
-
await rebillyInstruments.mount(options);
|
|
31
|
-
expect(rebillyInstruments.mount).toHaveBeenCalledTimes(1);
|
|
32
|
-
expect(rebillyInstruments.mount).toHaveBeenCalledWith(options);
|
|
33
|
-
await (0, _asyncUtilities.avoidUnhandledPromises)();
|
|
34
|
-
});
|
|
35
|
-
});
|
package/dist/loader/index.js
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.Loader = void 0;
|
|
7
|
-
|
|
8
|
-
var _isDomElement = _interopRequireDefault(require("../utils/is-dom-element"));
|
|
9
|
-
|
|
10
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
|
-
class Loader {
|
|
13
|
-
constructor() {
|
|
14
|
-
this.summary = [];
|
|
15
|
-
this.form = [];
|
|
16
|
-
this.modal = [];
|
|
17
|
-
this.DOM = {
|
|
18
|
-
loading: `
|
|
19
|
-
<div class="rebilly-instruments-loader is-active">
|
|
20
|
-
<div class="rebilly-instruments-loader-spinner"></div>
|
|
21
|
-
</div>
|
|
22
|
-
`
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
addDOMElement({
|
|
27
|
-
section = 'form',
|
|
28
|
-
el = null
|
|
29
|
-
} = {}) {
|
|
30
|
-
if ((0, _isDomElement.default)(el)) {
|
|
31
|
-
el.style.position = 'relative';
|
|
32
|
-
this.DOM[section] = el;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
startLoading({
|
|
37
|
-
section = 'form',
|
|
38
|
-
id = ''
|
|
39
|
-
} = {}) {
|
|
40
|
-
var _this$DOM;
|
|
41
|
-
|
|
42
|
-
const minHeight = '200px';
|
|
43
|
-
this[section].push(id);
|
|
44
|
-
|
|
45
|
-
if ((_this$DOM = this.DOM) !== null && _this$DOM !== void 0 && _this$DOM[section]) {
|
|
46
|
-
if (!this.DOM[section].querySelector('.rebilly-instruments-loader')) {
|
|
47
|
-
this.DOM[section].innerHTML = this.DOM.loading;
|
|
48
|
-
} else {
|
|
49
|
-
this.DOM[section].querySelector('.rebilly-instruments-loader').classList.add('is-active');
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
this.DOM[section].style.minHeight = minHeight;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
stopLoading({
|
|
57
|
-
section = 'form',
|
|
58
|
-
id = ''
|
|
59
|
-
} = {}) {
|
|
60
|
-
const idIndex = this[section].indexOf(id);
|
|
61
|
-
|
|
62
|
-
if (idIndex !== -1) {
|
|
63
|
-
this[section].splice(idIndex, 1);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
if (!this[section].length && this.DOM[section].querySelector('.rebilly-instruments-loader')) {
|
|
67
|
-
this.DOM[section].querySelector('.rebilly-instruments-loader').classList.remove('is-active');
|
|
68
|
-
this.DOM[section].style.minHeight = '';
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
clearAll() {
|
|
73
|
-
this.form.forEach(id => {
|
|
74
|
-
this.stopLoading({
|
|
75
|
-
id
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
this.summary.forEach(id => {
|
|
79
|
-
this.stopLoading({
|
|
80
|
-
section: 'summary',
|
|
81
|
-
id
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
this.modal.forEach(id => {
|
|
85
|
-
this.stopLoading({
|
|
86
|
-
section: 'modal',
|
|
87
|
-
id
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
exports.Loader = Loader;
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _index = require("./index");
|
|
4
|
-
|
|
5
|
-
describe('Loader Class', () => {
|
|
6
|
-
let loader;
|
|
7
|
-
beforeEach(() => {
|
|
8
|
-
loader = new _index.Loader();
|
|
9
|
-
document.body.innerHTML = `
|
|
10
|
-
<div class="form-selector"></div>
|
|
11
|
-
<div class="summary-selector"></div>
|
|
12
|
-
`;
|
|
13
|
-
loader.addDOMElement({
|
|
14
|
-
el: document.querySelector('.form-selector')
|
|
15
|
-
});
|
|
16
|
-
loader.addDOMElement({
|
|
17
|
-
section: 'summary',
|
|
18
|
-
el: document.querySelector('.summary-selector')
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
it('manage state of loading ids', () => {
|
|
22
|
-
loader.startLoading({
|
|
23
|
-
id: 'loadForm'
|
|
24
|
-
});
|
|
25
|
-
loader.startLoading({
|
|
26
|
-
id: 'updateForm'
|
|
27
|
-
}); // Start loading state
|
|
28
|
-
|
|
29
|
-
loader.startLoading({
|
|
30
|
-
section: 'summary',
|
|
31
|
-
id: 'loadSummary'
|
|
32
|
-
});
|
|
33
|
-
loader.startLoading({
|
|
34
|
-
section: 'summary',
|
|
35
|
-
id: 'updateSummary'
|
|
36
|
-
}); // Stop one loading state
|
|
37
|
-
|
|
38
|
-
loader.stopLoading({
|
|
39
|
-
id: 'loadForm'
|
|
40
|
-
});
|
|
41
|
-
expect(loader.form.length).toEqual(1);
|
|
42
|
-
expect(loader.summary.length).toEqual(2);
|
|
43
|
-
});
|
|
44
|
-
it('adds the loader HTML on element and removes the active class when stoped', () => {
|
|
45
|
-
loader.startLoading({
|
|
46
|
-
id: 'loadForm'
|
|
47
|
-
});
|
|
48
|
-
expect(loader.DOM.form.innerHTML).toMatch('rebilly-instruments-loader');
|
|
49
|
-
expect(loader.DOM.form.querySelector('.rebilly-instruments-loader').classList.contains('is-active')).toEqual(true);
|
|
50
|
-
loader.stopLoading({
|
|
51
|
-
id: 'loadForm'
|
|
52
|
-
});
|
|
53
|
-
expect(loader.DOM.form.querySelector('.rebilly-instruments-loader').classList.contains('is-active')).toEqual(false);
|
|
54
|
-
});
|
|
55
|
-
it('keeps loading when there are Ids on the element array', () => {
|
|
56
|
-
loader.startLoading({
|
|
57
|
-
id: 'loadForm'
|
|
58
|
-
});
|
|
59
|
-
loader.startLoading({
|
|
60
|
-
id: 'updateForm'
|
|
61
|
-
});
|
|
62
|
-
expect(loader.DOM.form.innerHTML).toMatch('rebilly-instruments-loader');
|
|
63
|
-
expect(loader.DOM.form.querySelector('.rebilly-instruments-loader').classList.contains('is-active')).toEqual(true);
|
|
64
|
-
loader.stopLoading({
|
|
65
|
-
id: 'loadForm'
|
|
66
|
-
});
|
|
67
|
-
expect(loader.DOM.form.querySelector('.rebilly-instruments-loader').classList.contains('is-active')).toEqual(true);
|
|
68
|
-
});
|
|
69
|
-
});
|
package/dist/storefront/index.js
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.validateStateForStorefront = validateStateForStorefront;
|
|
7
|
-
exports.Endpoint = Endpoint;
|
|
8
|
-
exports.default = exports.StorefrontInstance = void 0;
|
|
9
|
-
|
|
10
|
-
var _rebillyJsSdk = require("rebilly-js-sdk");
|
|
11
|
-
|
|
12
|
-
function validateStateForStorefront({
|
|
13
|
-
state
|
|
14
|
-
}) {
|
|
15
|
-
if (!state.storefront) {
|
|
16
|
-
throw new Error('Could not access rebilly-js-sdk instance');
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
if (!state.options) {
|
|
20
|
-
throw new Error('Could not use Rebilly Instruments mount options to fetch Rebilly data');
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
async function Endpoint({
|
|
25
|
-
state
|
|
26
|
-
} = {}, callback) {
|
|
27
|
-
try {
|
|
28
|
-
validateStateForStorefront({
|
|
29
|
-
state
|
|
30
|
-
});
|
|
31
|
-
return await callback();
|
|
32
|
-
} catch (error) {
|
|
33
|
-
// TODO: standard error handling for all endpoints
|
|
34
|
-
// console.error(error);
|
|
35
|
-
if (error.status === 422) {
|
|
36
|
-
error.details.forEach(e => console.error(e));
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
throw error;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
class StorefrontInstance {
|
|
44
|
-
constructor({
|
|
45
|
-
publishableKey = null,
|
|
46
|
-
organizationId = null,
|
|
47
|
-
mode = 'live',
|
|
48
|
-
timeout = 10000,
|
|
49
|
-
liveUrl = null,
|
|
50
|
-
sandboxUrl = null
|
|
51
|
-
} = {}) {
|
|
52
|
-
const urls = {
|
|
53
|
-
live: liveUrl || 'https://api.rebilly.com',
|
|
54
|
-
sandbox: sandboxUrl || 'https://api-sandbox.rebilly.com'
|
|
55
|
-
};
|
|
56
|
-
const api = (0, _rebillyJsSdk.RebillyStorefrontAPI)({
|
|
57
|
-
organizationId,
|
|
58
|
-
sandbox: mode === 'sandbox',
|
|
59
|
-
timeout: Number.isNaN(parseInt(timeout, 10)) ? 10000 : parseInt(timeout, 10),
|
|
60
|
-
urls
|
|
61
|
-
});
|
|
62
|
-
api.setPublishableKey(publishableKey);
|
|
63
|
-
this.api = api;
|
|
64
|
-
return this.api;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
exports.StorefrontInstance = StorefrontInstance;
|
|
70
|
-
|
|
71
|
-
var _default = (config = {}) => new StorefrontInstance(config);
|
|
72
|
-
|
|
73
|
-
exports.default = _default;
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.fetchInvoice = fetchInvoice;
|
|
7
|
-
|
|
8
|
-
var _invoiceModel = _interopRequireDefault(require("./models/invoice-model"));
|
|
9
|
-
|
|
10
|
-
var _index = require("./index");
|
|
11
|
-
|
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
|
|
14
|
-
async function fetchInvoice({
|
|
15
|
-
data = null,
|
|
16
|
-
state = null
|
|
17
|
-
}) {
|
|
18
|
-
return (0, _index.Endpoint)({
|
|
19
|
-
state
|
|
20
|
-
}, async () => {
|
|
21
|
-
state.storefront.setSessionToken(state.options.customerJwt);
|
|
22
|
-
const {
|
|
23
|
-
fields
|
|
24
|
-
} = await state.storefront.invoices.get(data);
|
|
25
|
-
return new _invoiceModel.default(fields);
|
|
26
|
-
});
|
|
27
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
class BaseModel {
|
|
9
|
-
constructor({ ...fields
|
|
10
|
-
} = {}) {
|
|
11
|
-
Object.entries(fields).forEach(([key, value]) => {
|
|
12
|
-
this[key] = value;
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
exports.default = BaseModel;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _baseModel = _interopRequireDefault(require("./base-model"));
|
|
9
|
-
|
|
10
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
|
-
class InvoiceModel extends _baseModel.default {}
|
|
13
|
-
|
|
14
|
-
exports.default = InvoiceModel;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _baseModel = _interopRequireDefault(require("./base-model"));
|
|
9
|
-
|
|
10
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
|
-
class PlanModel extends _baseModel.default {}
|
|
13
|
-
|
|
14
|
-
exports.default = PlanModel;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _baseModel = _interopRequireDefault(require("./base-model"));
|
|
9
|
-
|
|
10
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
|
-
class ProductModel extends _baseModel.default {}
|
|
13
|
-
|
|
14
|
-
exports.default = ProductModel;
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = exports.ReadyToPayFeatureModel = void 0;
|
|
7
|
-
|
|
8
|
-
class ReadyToPayFeatureModel {
|
|
9
|
-
constructor({
|
|
10
|
-
name = '',
|
|
11
|
-
// Google Pay fields
|
|
12
|
-
merchantName = '',
|
|
13
|
-
merchantOrigin = '',
|
|
14
|
-
// Plaid fields
|
|
15
|
-
linkToken = '',
|
|
16
|
-
expirationTime = ''
|
|
17
|
-
} = {}) {
|
|
18
|
-
this.name = name;
|
|
19
|
-
this.merchantName = merchantName;
|
|
20
|
-
this.merchantOrigin = merchantOrigin;
|
|
21
|
-
this.linkToken = linkToken;
|
|
22
|
-
this.expirationTime = expirationTime;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
exports.ReadyToPayFeatureModel = ReadyToPayFeatureModel;
|
|
28
|
-
|
|
29
|
-
class ReadyToPayModel {
|
|
30
|
-
constructor({
|
|
31
|
-
index = null,
|
|
32
|
-
method = '',
|
|
33
|
-
feature = null,
|
|
34
|
-
brands = [],
|
|
35
|
-
filters = []
|
|
36
|
-
} = {}) {
|
|
37
|
-
this.index = index;
|
|
38
|
-
this.method = method;
|
|
39
|
-
this.feature = feature ? new ReadyToPayFeatureModel(feature) : null;
|
|
40
|
-
this.brands = brands;
|
|
41
|
-
this.filters = filters;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
exports.default = ReadyToPayModel;
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = exports.SummaryDiscountModel = exports.SummaryTaxModel = exports.SummaryLineItemModel = void 0;
|
|
7
|
-
|
|
8
|
-
var _baseModel = _interopRequireDefault(require("./base-model"));
|
|
9
|
-
|
|
10
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
|
-
class SummaryLineItemModel extends _baseModel.default {
|
|
13
|
-
constructor({
|
|
14
|
-
unitPrice = 0.0,
|
|
15
|
-
quantity = 0,
|
|
16
|
-
price = 0.0,
|
|
17
|
-
...fields
|
|
18
|
-
} = {}) {
|
|
19
|
-
super(fields);
|
|
20
|
-
this.unitPrice = unitPrice;
|
|
21
|
-
this.quantity = quantity;
|
|
22
|
-
this.price = price;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
exports.SummaryLineItemModel = SummaryLineItemModel;
|
|
28
|
-
|
|
29
|
-
class SummaryTaxModel extends _baseModel.default {}
|
|
30
|
-
|
|
31
|
-
exports.SummaryTaxModel = SummaryTaxModel;
|
|
32
|
-
|
|
33
|
-
class SummaryDiscountModel extends _baseModel.default {
|
|
34
|
-
constructor({
|
|
35
|
-
amount = 0,
|
|
36
|
-
...fields
|
|
37
|
-
}) {
|
|
38
|
-
super(fields);
|
|
39
|
-
this.amount = amount;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
exports.SummaryDiscountModel = SummaryDiscountModel;
|
|
45
|
-
|
|
46
|
-
class SummaryModel {
|
|
47
|
-
constructor({
|
|
48
|
-
currency = '',
|
|
49
|
-
lineItems = [],
|
|
50
|
-
taxes = [],
|
|
51
|
-
discounts = [],
|
|
52
|
-
subtotalAmount = 0.0,
|
|
53
|
-
taxAmount = 0.0,
|
|
54
|
-
shippingAmount = 0.0,
|
|
55
|
-
discountsAmount = 0.0,
|
|
56
|
-
total = 0.0
|
|
57
|
-
} = {}) {
|
|
58
|
-
function map(array) {
|
|
59
|
-
const list = Array.isArray(array) ? array : [];
|
|
60
|
-
return {
|
|
61
|
-
// eslint-disable-next-line new-cap
|
|
62
|
-
to: instance => list.map(item => new instance(item))
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
this.currency = currency;
|
|
67
|
-
this.lineItems = map(lineItems).to(SummaryLineItemModel);
|
|
68
|
-
this.taxes = map(taxes).to(SummaryTaxModel);
|
|
69
|
-
this.discounts = map(discounts).to(SummaryDiscountModel);
|
|
70
|
-
this.subtotalAmount = subtotalAmount;
|
|
71
|
-
this.taxAmount = taxAmount;
|
|
72
|
-
this.shippingAmount = shippingAmount;
|
|
73
|
-
this.discountsAmount = discountsAmount;
|
|
74
|
-
this.total = total;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
exports.default = SummaryModel;
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _baseModel = _interopRequireDefault(require("./base-model"));
|
|
9
|
-
|
|
10
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
|
-
class TransactionModel extends _baseModel.default {
|
|
13
|
-
constructor({
|
|
14
|
-
invoiceIds = [],
|
|
15
|
-
...fields
|
|
16
|
-
}) {
|
|
17
|
-
super(fields);
|
|
18
|
-
this.invoiceIds = invoiceIds || [];
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
get invoiceId() {
|
|
22
|
-
return this.invoiceIds[0] || null;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
get hasInvoice() {
|
|
26
|
-
return !!this.invoiceId;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
exports.default = TransactionModel;
|