@secrethub/ngx-stripe
Version:
The core package for ngx-stripe, for using stripe.js in your application
177 lines • 13.4 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { Observable } from 'rxjs';
import { Inject, Injectable } from '@angular/core';
import { STRIPE_OPTIONS, STRIPE_PUBLIC_KEY, STRIPE_SCRIPT_LOCATION, STRIPE_VERSION } from '../model/stripe.constant';
import { SupportedVersions } from '../model/SupportedVersions';
import * as i0 from "@angular/core";
import * as i1 from "../model/stripe.constant";
var StripeLoader = /** @class */ (function () {
function StripeLoader(version, options, key) {
this.version = version;
this.options = options;
this.key = key;
}
/**
* Fetches the stripe instance from the DOM
*
* @return The Stripe instance or null if it is not yet registered
*/
/**
* Fetches the stripe instance from the DOM
*
* @param {?} key
* @param {?} options
* @return {?} The Stripe instance or null if it is not yet registered
*/
StripeLoader.getStripeInstance = /**
* Fetches the stripe instance from the DOM
*
* @param {?} key
* @param {?} options
* @return {?} The Stripe instance or null if it is not yet registered
*/
function (key, options) {
/** @type {?} */
var stripeInstance = window[StripeLoader.STRIPE_WINDOW_KEY];
if (stripeInstance) {
return stripeInstance(key, options);
}
return null;
};
/**
* Checks whether or not StripeJS has been loaded
*/
/**
* Checks whether or not StripeJS has been loaded
* @return {?}
*/
StripeLoader.isStripeLoaded = /**
* Checks whether or not StripeJS has been loaded
* @return {?}
*/
function () {
return !!window[StripeLoader.STRIPE_WINDOW_KEY];
};
/**
* Injects the script tag into the body of the page in order to lazy
* load the Stripe script
*
* @return Observable to indicate when the script has finished loading
*/
/**
* Injects the script tag into the body of the page in order to lazy
* load the Stripe script
*
* @return {?} Observable to indicate when the script has finished loading
*/
StripeLoader.prototype.loadScript = /**
* Injects the script tag into the body of the page in order to lazy
* load the Stripe script
*
* @return {?} Observable to indicate when the script has finished loading
*/
function () {
var _this = this;
return new Observable(function (observer) {
if (!StripeLoader.isStripeLoaded()) {
/** @type {?} */
var script = StripeLoader.constructScript(_this.getStripeScriptUrl());
script.onload = (function () {
observer.next(StripeLoader.getStripeInstance(_this.key, _this.options));
observer.complete();
});
script.onerror = function () {
observer.error('Failed to load the Stripe script!');
observer.complete();
};
document.body.appendChild(script);
}
else {
observer.next(StripeLoader.getStripeInstance(_this.key, _this.options));
observer.complete();
}
});
};
/**
* Constructs the url that should be used for loading the Stripe script
* @return URL to stripe script location
*/
/**
* Constructs the url that should be used for loading the Stripe script
* @return {?} URL to stripe script location
*/
StripeLoader.prototype.getStripeScriptUrl = /**
* Constructs the url that should be used for loading the Stripe script
* @return {?} URL to stripe script location
*/
function () {
return STRIPE_SCRIPT_LOCATION + this.version + '/';
};
/**
* Constructs a script element that loads javascript from the given url
* @param url - The URL from which the javascript should be loaded
*
* @return A script element that can be attached to the DOM
*/
/**
* Constructs a script element that loads javascript from the given url
* @param {?} url - The URL from which the javascript should be loaded
*
* @return {?} A script element that can be attached to the DOM
*/
StripeLoader.constructScript = /**
* Constructs a script element that loads javascript from the given url
* @param {?} url - The URL from which the javascript should be loaded
*
* @return {?} A script element that can be attached to the DOM
*/
function (url) {
/** @type {?} */
var script = document.createElement('script');
script.type = 'text/javascript';
script.async = true;
script.defer = true;
script.src = url;
return script;
};
/**
* The key under which the stripe script is placed in the
* window object
*
* @default 'Stripe'
*/
StripeLoader.STRIPE_WINDOW_KEY = 'Stripe';
StripeLoader.decorators = [
{ type: Injectable, args: [{
providedIn: 'root',
},] }
];
StripeLoader.ctorParameters = function () { return [
{ type: SupportedVersions, decorators: [{ type: Inject, args: [STRIPE_VERSION,] }] },
{ type: undefined, decorators: [{ type: Inject, args: [STRIPE_OPTIONS,] }] },
{ type: String, decorators: [{ type: Inject, args: [STRIPE_PUBLIC_KEY,] }] }
]; };
/** @nocollapse */ StripeLoader.ngInjectableDef = i0.defineInjectable({ factory: function StripeLoader_Factory() { return new StripeLoader(i0.inject(i1.STRIPE_VERSION), i0.inject(i1.STRIPE_OPTIONS), i0.inject(i1.STRIPE_PUBLIC_KEY)); }, token: StripeLoader, providedIn: "root" });
return StripeLoader;
}());
export { StripeLoader };
if (false) {
/**
* The key under which the stripe script is placed in the
* window object
*
* \@default 'Stripe'
* @type {?}
*/
StripeLoader.STRIPE_WINDOW_KEY;
/** @type {?} */
StripeLoader.prototype.version;
/** @type {?} */
StripeLoader.prototype.options;
/** @type {?} */
StripeLoader.prototype.key;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaXBlLWxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlY3JldGh1Yi9uZ3gtc3RyaXBlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL3N0cmlwZS1sb2FkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUMsY0FBYyxFQUFFLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLGNBQWMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ25ILE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDRCQUE0QixDQUFDOzs7QUFHN0Q7SUFhRSxzQkFBNEMsT0FBMEIsRUFDMUIsT0FBNEIsRUFDekIsR0FBVztRQUZkLFlBQU8sR0FBUCxPQUFPLENBQW1CO1FBQzFCLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBQ3pCLFFBQUcsR0FBSCxHQUFHLENBQVE7SUFDMUQsQ0FBQztJQUVEOzs7O09BSUc7Ozs7Ozs7O0lBQ1csOEJBQWlCOzs7Ozs7O0lBQS9CLFVBQWdDLEdBQVcsRUFBRSxPQUE0Qjs7WUFDakUsY0FBYyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUM7UUFDN0QsSUFBSSxjQUFjLEVBQUU7WUFDbEIsT0FBTyxjQUFjLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3JDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7Ozs7O0lBQ1csMkJBQWM7Ozs7SUFBNUI7UUFDRSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7OztPQUtHOzs7Ozs7O0lBQ0ksaUNBQVU7Ozs7OztJQUFqQjtRQUFBLGlCQXFCQztRQXBCQyxPQUFPLElBQUksVUFBVSxDQUFXLFVBQUMsUUFBOEI7WUFDN0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsRUFBRTs7b0JBQzVCLE1BQU0sR0FBRyxZQUFZLENBQUMsZUFBZSxDQUFDLEtBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUV0RSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUM7b0JBQ2YsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsS0FBSSxDQUFDLEdBQUcsRUFBRSxLQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztvQkFDdEUsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN0QixDQUFDLENBQUMsQ0FBQztnQkFFSCxNQUFNLENBQUMsT0FBTyxHQUFHO29CQUNmLFFBQVEsQ0FBQyxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztvQkFDcEQsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN0QixDQUFDLENBQUM7Z0JBRUYsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDbkM7aUJBQU07Z0JBQ0wsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsS0FBSSxDQUFDLEdBQUcsRUFBRSxLQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDdEUsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ3JCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHOzs7OztJQUNLLHlDQUFrQjs7OztJQUExQjtRQUNFLE9BQU8sc0JBQXNCLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7SUFDckQsQ0FBQztJQUVEOzs7OztPQUtHOzs7Ozs7O0lBQ1ksNEJBQWU7Ozs7OztJQUE5QixVQUErQixHQUFXOztZQUNsQyxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7UUFDL0MsTUFBTSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQztRQUNoQyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNwQixNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNwQixNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUVqQixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBcEZEOzs7OztPQUtHO0lBQ3FCLDhCQUFpQixHQUFHLFFBQVEsQ0FBQzs7Z0JBWHRELFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OztnQkFMTyxpQkFBaUIsdUJBZ0JWLE1BQU0sU0FBQyxjQUFjO2dEQUNyQixNQUFNLFNBQUMsY0FBYzs2Q0FDckIsTUFBTSxTQUFDLGlCQUFpQjs7O3VCQXJCdkM7Q0FnR0MsQUExRkQsSUEwRkM7U0F2RlksWUFBWTs7Ozs7Ozs7O0lBUXZCLCtCQUFxRDs7SUFFekMsK0JBQTBEOztJQUMxRCwrQkFBNEQ7O0lBQzVELDJCQUE4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7T2JzZXJ2YWJsZSwgU3Vic2NyaWJlcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1NUUklQRV9PUFRJT05TLCBTVFJJUEVfUFVCTElDX0tFWSwgU1RSSVBFX1NDUklQVF9MT0NBVElPTiwgU1RSSVBFX1ZFUlNJT059IGZyb20gJy4uL21vZGVsL3N0cmlwZS5jb25zdGFudCc7XG5pbXBvcnQge1N1cHBvcnRlZFZlcnNpb25zfSBmcm9tICcuLi9tb2RlbC9TdXBwb3J0ZWRWZXJzaW9ucyc7XG5pbXBvcnQge1N0cmlwZUNvbmZpZ09wdGlvbnMsIFN0cmlwZUpTfSBmcm9tICdzdHJpcGVqcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTdHJpcGVMb2FkZXIge1xuXG4gIC8qKlxuICAgKiBUaGUga2V5IHVuZGVyIHdoaWNoIHRoZSBzdHJpcGUgc2NyaXB0IGlzIHBsYWNlZCBpbiB0aGVcbiAgICogd2luZG93IG9iamVjdFxuICAgKlxuICAgKiBAZGVmYXVsdCAnU3RyaXBlJ1xuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgU1RSSVBFX1dJTkRPV19LRVkgPSAnU3RyaXBlJztcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KFNUUklQRV9WRVJTSU9OKSBwcml2YXRlIHZlcnNpb246IFN1cHBvcnRlZFZlcnNpb25zLFxuICAgICAgICAgICAgICBASW5qZWN0KFNUUklQRV9PUFRJT05TKSBwcml2YXRlIG9wdGlvbnM6IFN0cmlwZUNvbmZpZ09wdGlvbnMsXG4gICAgICAgICAgICAgIEBJbmplY3QoU1RSSVBFX1BVQkxJQ19LRVkpIHByaXZhdGUga2V5OiBzdHJpbmcpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBGZXRjaGVzIHRoZSBzdHJpcGUgaW5zdGFuY2UgZnJvbSB0aGUgRE9NXG4gICAqXG4gICAqIEByZXR1cm4gVGhlIFN0cmlwZSBpbnN0YW5jZSBvciBudWxsIGlmIGl0IGlzIG5vdCB5ZXQgcmVnaXN0ZXJlZFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRTdHJpcGVJbnN0YW5jZShrZXk6IHN0cmluZywgb3B0aW9uczogU3RyaXBlQ29uZmlnT3B0aW9ucyk6IFN0cmlwZUpTIHwgbnVsbCB7XG4gICAgY29uc3Qgc3RyaXBlSW5zdGFuY2UgPSB3aW5kb3dbU3RyaXBlTG9hZGVyLlNUUklQRV9XSU5ET1dfS0VZXTtcbiAgICBpZiAoc3RyaXBlSW5zdGFuY2UpIHtcbiAgICAgIHJldHVybiBzdHJpcGVJbnN0YW5jZShrZXksIG9wdGlvbnMpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBvciBub3QgU3RyaXBlSlMgaGFzIGJlZW4gbG9hZGVkXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzU3RyaXBlTG9hZGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXdpbmRvd1tTdHJpcGVMb2FkZXIuU1RSSVBFX1dJTkRPV19LRVldO1xuICB9XG5cbiAgLyoqXG4gICAqIEluamVjdHMgdGhlIHNjcmlwdCB0YWcgaW50byB0aGUgYm9keSBvZiB0aGUgcGFnZSBpbiBvcmRlciB0byBsYXp5XG4gICAqIGxvYWQgdGhlIFN0cmlwZSBzY3JpcHRcbiAgICpcbiAgICogQHJldHVybiBPYnNlcnZhYmxlIHRvIGluZGljYXRlIHdoZW4gdGhlIHNjcmlwdCBoYXMgZmluaXNoZWQgbG9hZGluZ1xuICAgKi9cbiAgcHVibGljIGxvYWRTY3JpcHQoKTogT2JzZXJ2YWJsZTxTdHJpcGVKUz4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxTdHJpcGVKUz4oKG9ic2VydmVyOiBTdWJzY3JpYmVyPFN0cmlwZUpTPikgPT4ge1xuICAgICAgaWYgKCFTdHJpcGVMb2FkZXIuaXNTdHJpcGVMb2FkZWQoKSkge1xuICAgICAgICBjb25zdCBzY3JpcHQgPSBTdHJpcGVMb2FkZXIuY29uc3RydWN0U2NyaXB0KHRoaXMuZ2V0U3RyaXBlU2NyaXB0VXJsKCkpO1xuXG4gICAgICAgIHNjcmlwdC5vbmxvYWQgPSAoKCkgPT4ge1xuICAgICAgICAgIG9ic2VydmVyLm5leHQoU3RyaXBlTG9hZGVyLmdldFN0cmlwZUluc3RhbmNlKHRoaXMua2V5LCB0aGlzLm9wdGlvbnMpKTtcbiAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBzY3JpcHQub25lcnJvciA9ICgpID0+IHtcbiAgICAgICAgICBvYnNlcnZlci5lcnJvcignRmFpbGVkIHRvIGxvYWQgdGhlIFN0cmlwZSBzY3JpcHQhJyk7XG4gICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgfTtcblxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYnNlcnZlci5uZXh0KFN0cmlwZUxvYWRlci5nZXRTdHJpcGVJbnN0YW5jZSh0aGlzLmtleSwgdGhpcy5vcHRpb25zKSk7XG4gICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ29uc3RydWN0cyB0aGUgdXJsIHRoYXQgc2hvdWxkIGJlIHVzZWQgZm9yIGxvYWRpbmcgdGhlIFN0cmlwZSBzY3JpcHRcbiAgICogQHJldHVybiBVUkwgdG8gc3RyaXBlIHNjcmlwdCBsb2NhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBnZXRTdHJpcGVTY3JpcHRVcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU1RSSVBFX1NDUklQVF9MT0NBVElPTiArIHRoaXMudmVyc2lvbiArICcvJztcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgc2NyaXB0IGVsZW1lbnQgdGhhdCBsb2FkcyBqYXZhc2NyaXB0IGZyb20gdGhlIGdpdmVuIHVybFxuICAgKiBAcGFyYW0gdXJsIC0gVGhlIFVSTCBmcm9tIHdoaWNoIHRoZSBqYXZhc2NyaXB0IHNob3VsZCBiZSBsb2FkZWRcbiAgICpcbiAgICogQHJldHVybiBBIHNjcmlwdCBlbGVtZW50IHRoYXQgY2FuIGJlIGF0dGFjaGVkIHRvIHRoZSBET01cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGNvbnN0cnVjdFNjcmlwdCh1cmw6IHN0cmluZyk6IEhUTUxTY3JpcHRFbGVtZW50IHtcbiAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICBzY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xuICAgIHNjcmlwdC5hc3luYyA9IHRydWU7XG4gICAgc2NyaXB0LmRlZmVyID0gdHJ1ZTtcbiAgICBzY3JpcHQuc3JjID0gdXJsO1xuXG4gICAgcmV0dXJuIHNjcmlwdDtcbiAgfVxufVxuIl19