@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
JavaScript
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==