UNPKG

@secrethub/ngx-stripe

Version:

The core package for ngx-stripe, for using stripe.js in your application

128 lines 11.4 kB
/** * @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"; export class StripeLoader { /** * @param {?} version * @param {?} options * @param {?} key */ constructor(version, options, key) { this.version = version; this.options = options; this.key = key; } /** * Fetches the stripe instance from the DOM * * @param {?} key * @param {?} options * @return {?} The Stripe instance or null if it is not yet registered */ static getStripeInstance(key, options) { /** @type {?} */ const stripeInstance = window[StripeLoader.STRIPE_WINDOW_KEY]; if (stripeInstance) { return stripeInstance(key, options); } return null; } /** * Checks whether or not StripeJS has been loaded * @return {?} */ static isStripeLoaded() { 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 */ loadScript() { return new Observable((observer) => { if (!StripeLoader.isStripeLoaded()) { /** @type {?} */ const script = StripeLoader.constructScript(this.getStripeScriptUrl()); script.onload = (() => { observer.next(StripeLoader.getStripeInstance(this.key, this.options)); observer.complete(); }); script.onerror = () => { 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 */ getStripeScriptUrl() { 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 */ static constructScript(url) { /** @type {?} */ const 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 = () => [ { 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" }); 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaXBlLWxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlY3JldGh1Yi9uZ3gtc3RyaXBlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL3N0cmlwZS1sb2FkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFDLFVBQVUsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUMsY0FBYyxFQUFFLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLGNBQWMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ25ILE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDRCQUE0QixDQUFDOzs7QUFNN0QsTUFBTTs7Ozs7O0lBVUosWUFBNEMsT0FBMEIsRUFDMUIsT0FBNEIsRUFDekIsR0FBVztRQUZkLFlBQU8sR0FBUCxPQUFPLENBQW1CO1FBQzFCLFlBQU8sR0FBUCxPQUFPLENBQXFCO1FBQ3pCLFFBQUcsR0FBSCxHQUFHLENBQVE7SUFDMUQsQ0FBQzs7Ozs7Ozs7SUFPTSxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBVyxFQUFFLE9BQTRCOztjQUNqRSxjQUFjLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQztRQUM3RCxJQUFJLGNBQWMsRUFBRTtZQUNsQixPQUFPLGNBQWMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7U0FDckM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Ozs7O0lBS00sTUFBTSxDQUFDLGNBQWM7UUFDMUIsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2xELENBQUM7Ozs7Ozs7SUFRTSxVQUFVO1FBQ2YsT0FBTyxJQUFJLFVBQVUsQ0FBVyxDQUFDLFFBQThCLEVBQUUsRUFBRTtZQUNqRSxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxFQUFFOztzQkFDNUIsTUFBTSxHQUFHLFlBQVksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBRXRFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUU7b0JBQ3BCLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7b0JBQ3RFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDdEIsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUU7b0JBQ3BCLFFBQVEsQ0FBQyxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztvQkFDcEQsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN0QixDQUFDLENBQUM7Z0JBRUYsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDbkM7aUJBQU07Z0JBQ0wsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDdEUsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ3JCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzs7OztJQU1PLGtCQUFrQjtRQUN4QixPQUFPLHNCQUFzQixHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO0lBQ3JELENBQUM7Ozs7Ozs7SUFRTyxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQVc7O2NBQ2xDLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztRQUMvQyxNQUFNLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLE1BQU0sQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBRWpCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7O0FBcEZEOzs7OztHQUtHO0FBQ3FCLDhCQUFpQixHQUFHLFFBQVEsQ0FBQzs7WUFYdEQsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFMTyxpQkFBaUIsdUJBZ0JWLE1BQU0sU0FBQyxjQUFjOzRDQUNyQixNQUFNLFNBQUMsY0FBYzt5Q0FDckIsTUFBTSxTQUFDLGlCQUFpQjs7Ozs7Ozs7Ozs7SUFKckMsK0JBQXFEOztJQUV6QywrQkFBMEQ7O0lBQzFELCtCQUE0RDs7SUFDNUQsMkJBQThDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJzY3JpYmVyfSBmcm9tICdyeGpzJztcbmltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7U1RSSVBFX09QVElPTlMsIFNUUklQRV9QVUJMSUNfS0VZLCBTVFJJUEVfU0NSSVBUX0xPQ0FUSU9OLCBTVFJJUEVfVkVSU0lPTn0gZnJvbSAnLi4vbW9kZWwvc3RyaXBlLmNvbnN0YW50JztcbmltcG9ydCB7U3VwcG9ydGVkVmVyc2lvbnN9IGZyb20gJy4uL21vZGVsL1N1cHBvcnRlZFZlcnNpb25zJztcbmltcG9ydCB7U3RyaXBlQ29uZmlnT3B0aW9ucywgU3RyaXBlSlN9IGZyb20gJ3N0cmlwZWpzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFN0cmlwZUxvYWRlciB7XG5cbiAgLyoqXG4gICAqIFRoZSBrZXkgdW5kZXIgd2hpY2ggdGhlIHN0cmlwZSBzY3JpcHQgaXMgcGxhY2VkIGluIHRoZVxuICAgKiB3aW5kb3cgb2JqZWN0XG4gICAqXG4gICAqIEBkZWZhdWx0ICdTdHJpcGUnXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBTVFJJUEVfV0lORE9XX0tFWSA9ICdTdHJpcGUnO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoU1RSSVBFX1ZFUlNJT04pIHByaXZhdGUgdmVyc2lvbjogU3VwcG9ydGVkVmVyc2lvbnMsXG4gICAgICAgICAgICAgIEBJbmplY3QoU1RSSVBFX09QVElPTlMpIHByaXZhdGUgb3B0aW9uczogU3RyaXBlQ29uZmlnT3B0aW9ucyxcbiAgICAgICAgICAgICAgQEluamVjdChTVFJJUEVfUFVCTElDX0tFWSkgcHJpdmF0ZSBrZXk6IHN0cmluZykge1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIHN0cmlwZSBpbnN0YW5jZSBmcm9tIHRoZSBET01cbiAgICpcbiAgICogQHJldHVybiBUaGUgU3RyaXBlIGluc3RhbmNlIG9yIG51bGwgaWYgaXQgaXMgbm90IHlldCByZWdpc3RlcmVkXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldFN0cmlwZUluc3RhbmNlKGtleTogc3RyaW5nLCBvcHRpb25zOiBTdHJpcGVDb25maWdPcHRpb25zKTogU3RyaXBlSlMgfCBudWxsIHtcbiAgICBjb25zdCBzdHJpcGVJbnN0YW5jZSA9IHdpbmRvd1tTdHJpcGVMb2FkZXIuU1RSSVBFX1dJTkRPV19LRVldO1xuICAgIGlmIChzdHJpcGVJbnN0YW5jZSkge1xuICAgICAgcmV0dXJuIHN0cmlwZUluc3RhbmNlKGtleSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCBTdHJpcGVKUyBoYXMgYmVlbiBsb2FkZWRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNTdHJpcGVMb2FkZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhd2luZG93W1N0cmlwZUxvYWRlci5TVFJJUEVfV0lORE9XX0tFWV07XG4gIH1cblxuICAvKipcbiAgICogSW5qZWN0cyB0aGUgc2NyaXB0IHRhZyBpbnRvIHRoZSBib2R5IG9mIHRoZSBwYWdlIGluIG9yZGVyIHRvIGxhenlcbiAgICogbG9hZCB0aGUgU3RyaXBlIHNjcmlwdFxuICAgKlxuICAgKiBAcmV0dXJuIE9ic2VydmFibGUgdG8gaW5kaWNhdGUgd2hlbiB0aGUgc2NyaXB0IGhhcyBmaW5pc2hlZCBsb2FkaW5nXG4gICAqL1xuICBwdWJsaWMgbG9hZFNjcmlwdCgpOiBPYnNlcnZhYmxlPFN0cmlwZUpTPiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFN0cmlwZUpTPigob2JzZXJ2ZXI6IFN1YnNjcmliZXI8U3RyaXBlSlM+KSA9PiB7XG4gICAgICBpZiAoIVN0cmlwZUxvYWRlci5pc1N0cmlwZUxvYWRlZCgpKSB7XG4gICAgICAgIGNvbnN0IHNjcmlwdCA9IFN0cmlwZUxvYWRlci5jb25zdHJ1Y3RTY3JpcHQodGhpcy5nZXRTdHJpcGVTY3JpcHRVcmwoKSk7XG5cbiAgICAgICAgc2NyaXB0Lm9ubG9hZCA9ICgoKSA9PiB7XG4gICAgICAgICAgb2JzZXJ2ZXIubmV4dChTdHJpcGVMb2FkZXIuZ2V0U3RyaXBlSW5zdGFuY2UodGhpcy5rZXksIHRoaXMub3B0aW9ucykpO1xuICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNjcmlwdC5vbmVycm9yID0gKCkgPT4ge1xuICAgICAgICAgIG9ic2VydmVyLmVycm9yKCdGYWlsZWQgdG8gbG9hZCB0aGUgU3RyaXBlIHNjcmlwdCEnKTtcbiAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9ic2VydmVyLm5leHQoU3RyaXBlTG9hZGVyLmdldFN0cmlwZUluc3RhbmNlKHRoaXMua2V5LCB0aGlzLm9wdGlvbnMpKTtcbiAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIHRoZSB1cmwgdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgbG9hZGluZyB0aGUgU3RyaXBlIHNjcmlwdFxuICAgKiBAcmV0dXJuIFVSTCB0byBzdHJpcGUgc2NyaXB0IGxvY2F0aW9uXG4gICAqL1xuICBwcml2YXRlIGdldFN0cmlwZVNjcmlwdFVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTVFJJUEVfU0NSSVBUX0xPQ0FUSU9OICsgdGhpcy52ZXJzaW9uICsgJy8nO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBzY3JpcHQgZWxlbWVudCB0aGF0IGxvYWRzIGphdmFzY3JpcHQgZnJvbSB0aGUgZ2l2ZW4gdXJsXG4gICAqIEBwYXJhbSB1cmwgLSBUaGUgVVJMIGZyb20gd2hpY2ggdGhlIGphdmFzY3JpcHQgc2hvdWxkIGJlIGxvYWRlZFxuICAgKlxuICAgKiBAcmV0dXJuIEEgc2NyaXB0IGVsZW1lbnQgdGhhdCBjYW4gYmUgYXR0YWNoZWQgdG8gdGhlIERPTVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgY29uc3RydWN0U2NyaXB0KHVybDogc3RyaW5nKTogSFRNTFNjcmlwdEVsZW1lbnQge1xuICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgIHNjcmlwdC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7XG4gICAgc2NyaXB0LmFzeW5jID0gdHJ1ZTtcbiAgICBzY3JpcHQuZGVmZXIgPSB0cnVlO1xuICAgIHNjcmlwdC5zcmMgPSB1cmw7XG5cbiAgICByZXR1cm4gc2NyaXB0O1xuICB9XG59XG4iXX0=