UNPKG

@givtnl/angular-wepay-service

Version:

WePay service used to integrate WePay Elements with Angular. Forked from (https://github.com/fireflysemantics/angular-stripe-service).

74 lines 7.39 kB
import { Injectable } from '@angular/core'; import * as i0 from "@angular/core"; const WEPAY_API_URL = "https://cdn.wepay.com/wepay.min.js"; /** * This service has a `wepay` property to that gets * initialized to `window["WePay"]`. * * The constructor calls `inject()` which will * inject a script tag with containing the URL that loads * wepay and return a `Promise<WePayFactory>`. * * The script tag will only load wepay if * it is not available. * * If `window["WePay"]` is available then `inject()` resolves * the promise with that instance immediately, and does not create and * wait for the script tag to load. * * */ export class AngularWePayService { constructor() { // @ts-ignore this._wepay = window['WePay']; this.wePayPromise = this.inject(); } get wepay() { return this._wepay; } set wepay(s) { this._wepay = s; } create() { return this.wePayPromise.then(() => { return this.wepay; }); } inject() { if (this.wepay) { return Promise.resolve(this.wepay); } return new Promise((res, rej) => { const head = this.getHeadElement(); const script = document.createElement("script"); script.setAttribute("type", "text/javascript"); script.setAttribute("src", WEPAY_API_URL); head.appendChild(script); script.addEventListener("load", () => { // @ts-ignore this.wepay = window["WePay"]; res(this.wepay); }); }); } /** * Returns the `head` element. * @throws Error('Application does not have a head element'); */ getHeadElement() { let elm = document.getElementsByTagName("head")[0]; if (!elm) { throw new Error('Application does not have a head element'); } return elm; } } AngularWePayService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AngularWePayService_Factory() { return new AngularWePayService(); }, token: AngularWePayService, providedIn: "root" }); AngularWePayService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; AngularWePayService.ctorParameters = () => []; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci13ZXBheS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci13ZXBheS1zZXJ2aWNlL3NyYy9saWIvYW5ndWxhci13ZXBheS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRzNDLE1BQU0sYUFBYSxHQUFHLG9DQUFvQyxDQUFDO0FBSzNEOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsTUFBTSxPQUFPLG1CQUFtQjtJQU05QjtRQUpBLGFBQWE7UUFDTCxXQUFNLEdBQVMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBSXBDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFBO0lBQ25DLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLENBQU87UUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUUsR0FBRyxFQUFFO1lBQ2xDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxNQUFNO1FBRUosSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFFLElBQUksQ0FBQyxLQUFLLENBQUUsQ0FBQTtTQUNyQztRQUVELE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUMsR0FBRyxFQUFDLEVBQUU7WUFDNUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFBO1lBQ2xDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7WUFDL0MsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLENBQUMsQ0FBQTtZQUM5QyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQTtZQUN6QyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ3hCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUMsR0FBRSxFQUFFO2dCQUNqQyxhQUFhO2dCQUNiLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUM3QixHQUFHLENBQUUsSUFBSSxDQUFDLEtBQUssQ0FBRSxDQUFBO1lBQ25CLENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsY0FBYztRQUNaLElBQUksR0FBRyxHQUFlLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUU5RCxJQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1NBQzdEO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDOzs7O1lBMUVGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgV2VQYXkgfSBmcm9tICcuL3R5cGVzJztcclxuXHJcbmNvbnN0IFdFUEFZX0FQSV9VUkwgPSBcImh0dHBzOi8vY2RuLndlcGF5LmNvbS93ZXBheS5taW4uanNcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuLyoqXHJcbiAqIFRoaXMgc2VydmljZSBoYXMgYSBgd2VwYXlgIHByb3BlcnR5IHRvIHRoYXQgZ2V0c1xyXG4gKiBpbml0aWFsaXplZCB0byBgd2luZG93W1wiV2VQYXlcIl1gLlxyXG4gKiBcclxuICogVGhlIGNvbnN0cnVjdG9yIGNhbGxzIGBpbmplY3QoKWAgd2hpY2ggd2lsbFxyXG4gKiBpbmplY3QgYSBzY3JpcHQgdGFnIHdpdGggY29udGFpbmluZyB0aGUgVVJMIHRoYXQgbG9hZHNcclxuICogd2VwYXkgYW5kIHJldHVybiBhIGBQcm9taXNlPFdlUGF5RmFjdG9yeT5gLlxyXG4gKiBcclxuICogVGhlIHNjcmlwdCB0YWcgd2lsbCBvbmx5IGxvYWQgd2VwYXkgaWYgXHJcbiAqIGl0IGlzIG5vdCBhdmFpbGFibGUuXHJcbiAqIFxyXG4gKiBJZiBgd2luZG93W1wiV2VQYXlcIl1gIGlzIGF2YWlsYWJsZSB0aGVuIGBpbmplY3QoKWAgcmVzb2x2ZXMgXHJcbiAqIHRoZSBwcm9taXNlIHdpdGggdGhhdCBpbnN0YW5jZSBpbW1lZGlhdGVseSwgYW5kIGRvZXMgbm90IGNyZWF0ZSBhbmQgXHJcbiAqIHdhaXQgZm9yIHRoZSBzY3JpcHQgdGFnIHRvIGxvYWQuXHJcbiAqIFxyXG4gKiAgXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQW5ndWxhcldlUGF5U2VydmljZXtcclxuXHJcbiAgLy8gQHRzLWlnbm9yZVxyXG4gIHByaXZhdGUgX3dlcGF5OldlUGF5ID0gd2luZG93WydXZVBheSddXHJcbiAgcHJpdmF0ZSB3ZVBheVByb21pc2U6UHJvbWlzZTxhbnk+XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyBcclxuICAgIHRoaXMud2VQYXlQcm9taXNlID0gdGhpcy5pbmplY3QoKVxyXG4gIH1cclxuXHJcbiAgZ2V0IHdlcGF5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dlcGF5O1xyXG4gIH0gXHJcbiAgc2V0IHdlcGF5KHM6V2VQYXkpIHtcclxuICAgIHRoaXMuX3dlcGF5ID0gcztcclxuICB9XHJcblxyXG4gIGNyZWF0ZSgpOlByb21pc2U8V2VQYXk+e1xyXG4gICAgcmV0dXJuIHRoaXMud2VQYXlQcm9taXNlLnRoZW4oICgpID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMud2VwYXk7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgaW5qZWN0KCk6UHJvbWlzZTxXZVBheT57XHJcblxyXG4gICAgaWYoIHRoaXMud2VwYXkgKXtcclxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSggdGhpcy53ZXBheSApXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXMscmVqKT0+e1xyXG4gICAgICBjb25zdCBoZWFkID0gdGhpcy5nZXRIZWFkRWxlbWVudCgpXHJcbiAgICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIilcclxuICAgICAgc2NyaXB0LnNldEF0dHJpYnV0ZShcInR5cGVcIiwgXCJ0ZXh0L2phdmFzY3JpcHRcIilcclxuICAgICAgc2NyaXB0LnNldEF0dHJpYnV0ZShcInNyY1wiLCBXRVBBWV9BUElfVVJMKSAgICAgIFxyXG4gICAgICBoZWFkLmFwcGVuZENoaWxkKHNjcmlwdCkgICAgICBcclxuICAgICAgc2NyaXB0LmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsKCk9PntcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgdGhpcy53ZXBheSA9IHdpbmRvd1tcIldlUGF5XCJdO1xyXG4gICAgICAgIHJlcyggdGhpcy53ZXBheSApXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJucyB0aGUgYGhlYWRgIGVsZW1lbnQuXHJcbiAgICogQHRocm93cyBFcnJvcignQXBwbGljYXRpb24gZG9lcyBub3QgaGF2ZSBhIGhlYWQgZWxlbWVudCcpO1xyXG4gICAqL1xyXG4gIGdldEhlYWRFbGVtZW50KCl7XHJcbiAgICBsZXQgZWxtOkhUTUxFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdXHJcblxyXG4gICAgaWYoIWVsbSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FwcGxpY2F0aW9uIGRvZXMgbm90IGhhdmUgYSBoZWFkIGVsZW1lbnQnKTtcclxuICAgIH0gICAgXHJcbiAgICByZXR1cm4gZWxtO1xyXG4gIH0gIFxyXG59XHJcbiJdfQ==