UNPKG

ng-recaptchav3

Version:

Angular8 library to provide easy extraction for google recaptcha v3, invisible recaptcha and recaptcha v2

84 lines 7.14 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { isPlatformBrowser } from '@angular/common'; import { Inject, Injectable, InjectionToken, Optional, PLATFORM_ID } from '@angular/core'; import { BehaviorSubject, of } from 'rxjs'; /** @type {?} */ export const RECAPTCHA_LANGUAGE = new InjectionToken('recaptcha-language'); export class RecaptchaLoaderService { /** * @param {?} platformId * @param {?=} language */ constructor(platformId, language) { this.platformId = platformId; this.language = language; this.init(); this.ready = isPlatformBrowser(this.platformId) ? RecaptchaLoaderService.ready.asObservable() : of(); } /** * \@internal * @private * @return {?} */ init() { if (RecaptchaLoaderService.ready || !isPlatformBrowser(this.platformId)) { return; } window.ngRecaptchaLoaded = (/** * @return {?} */ () => { RecaptchaLoaderService.ready.next(grecaptcha); }); RecaptchaLoaderService.ready = new BehaviorSubject(null); /** @type {?} */ const script = (/** @type {?} */ (document.createElement('script'))); script.innerHTML = ''; /** @type {?} */ const langParam = this.language ? `&hl=${this.language}` : ''; script.src = `https://www.google.com/recaptcha/api.js?render=explicit&onload=ngRecaptchaLoaded${langParam}`; script.async = true; script.defer = true; script.setAttribute('nonce', ''); document.head.appendChild(script); } } /** * \@internal * @nocollapse */ RecaptchaLoaderService.ready = null; RecaptchaLoaderService.decorators = [ { type: Injectable } ]; /** @nocollapse */ RecaptchaLoaderService.ctorParameters = () => [ { type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }, { type: String, decorators: [{ type: Optional }, { type: Inject, args: [RECAPTCHA_LANGUAGE,] }] } ]; if (false) { /** * \@internal * @nocollapse * @type {?} * @private */ RecaptchaLoaderService.ready; /** @type {?} */ RecaptchaLoaderService.prototype.ready; /** * \@internal * @type {?} * @private */ RecaptchaLoaderService.prototype.language; /** * @type {?} * @private */ RecaptchaLoaderService.prototype.platformId; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjYXB0Y2hhLWxvYWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctcmVjYXB0Y2hhdjMvIiwic291cmNlcyI6WyJsaWIvcmVjYXB0Y2hhLWxvYWRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRixPQUFPLEVBQUUsZUFBZSxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFFdkQsTUFBTSxPQUFPLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUFTLG9CQUFvQixDQUFDO0FBV2xGLE1BQU0sT0FBTyxzQkFBc0I7Ozs7O0lBWWpDLFlBRXdDLFVBQWUsRUFDYixRQUFpQjtRQURuQixlQUFVLEdBQVYsVUFBVSxDQUFLO1FBR3JELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNaLElBQUksQ0FBQyxLQUFLLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ3ZHLENBQUM7Ozs7OztJQUdPLElBQUk7UUFDVixJQUFJLHNCQUFzQixDQUFDLEtBQUssSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN2RSxPQUFPO1NBQ1I7UUFFRCxNQUFNLENBQUMsaUJBQWlCOzs7UUFBRyxHQUFHLEVBQUU7WUFDOUIsc0JBQXNCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUEsQ0FBQztRQUNGLHNCQUFzQixDQUFDLEtBQUssR0FBRyxJQUFJLGVBQWUsQ0FBWSxJQUFJLENBQUMsQ0FBQzs7Y0FDOUQsTUFBTSxHQUFHLG1CQUFBLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQXFCO1FBQ3BFLE1BQU0sQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDOztjQUNoQixTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDN0QsTUFBTSxDQUFDLEdBQUcsR0FBRyxtRkFBbUYsU0FBUyxFQUFFLENBQUM7UUFDNUcsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDcEIsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDcEIsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQzs7Ozs7O0FBbkNjLDRCQUFLLEdBQStCLElBQUksQ0FBQzs7WUFOekQsVUFBVTs7Ozs0Q0FlTixNQUFNLFNBQUMsV0FBVzt5Q0FDbEIsUUFBUSxZQUFJLE1BQU0sU0FBQyxrQkFBa0I7Ozs7Ozs7OztJQVZ4Qyw2QkFBd0Q7O0lBRXhELHVDQUE2Qjs7Ozs7O0lBRzdCLDBDQUFrQzs7Ozs7SUFJaEMsNENBQXFEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgT3B0aW9uYWwsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZUNhcHRjaGEgfSBmcm9tICcuL2dyZWNhcHRjaGEnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY29uc3QgUkVDQVBUQ0hBX0xBTkdVQUdFID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ3JlY2FwdGNoYS1sYW5ndWFnZScpO1xuZGVjbGFyZSBjb25zdCBncmVjYXB0Y2hhOiBSZUNhcHRjaGE7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgZ3JlY2FwdGNoYTogUmVDYXB0Y2hhO1xuICAgIG5nUmVjYXB0Y2hhTG9hZGVkOiAoKSA9PiB2b2lkO1xuICB9XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSZWNhcHRjaGFMb2FkZXJTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBAbm9jb2xsYXBzZVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZHk6IEJlaGF2aW9yU3ViamVjdDxSZUNhcHRjaGE+ID0gbnVsbDtcblxuICByZWFkeTogT2JzZXJ2YWJsZTxSZUNhcHRjaGE+O1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBsYW5ndWFnZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHJlYWRvbmx5IHBsYXRmb3JtSWQ6IGFueSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFJFQ0FQVENIQV9MQU5HVUFHRSkgbGFuZ3VhZ2U/OiBzdHJpbmdcbiAgKSB7XG4gICAgdGhpcy5sYW5ndWFnZSA9IGxhbmd1YWdlO1xuICAgIHRoaXMuaW5pdCgpO1xuICAgIHRoaXMucmVhZHkgPSBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpID8gUmVjYXB0Y2hhTG9hZGVyU2VydmljZS5yZWFkeS5hc09ic2VydmFibGUoKSA6IG9mKCk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHByaXZhdGUgaW5pdCgpIHtcbiAgICBpZiAoUmVjYXB0Y2hhTG9hZGVyU2VydmljZS5yZWFkeSB8fCAhaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHdpbmRvdy5uZ1JlY2FwdGNoYUxvYWRlZCA9ICgpID0+IHtcbiAgICAgIFJlY2FwdGNoYUxvYWRlclNlcnZpY2UucmVhZHkubmV4dChncmVjYXB0Y2hhKTtcbiAgICB9O1xuICAgIFJlY2FwdGNoYUxvYWRlclNlcnZpY2UucmVhZHkgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFJlQ2FwdGNoYT4obnVsbCk7XG4gICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0JykgYXMgSFRNTFNjcmlwdEVsZW1lbnQ7XG4gICAgc2NyaXB0LmlubmVySFRNTCA9ICcnO1xuICAgIGNvbnN0IGxhbmdQYXJhbSA9IHRoaXMubGFuZ3VhZ2UgPyBgJmhsPSR7dGhpcy5sYW5ndWFnZX1gIDogJyc7XG4gICAgc2NyaXB0LnNyYyA9IGBodHRwczovL3d3dy5nb29nbGUuY29tL3JlY2FwdGNoYS9hcGkuanM/cmVuZGVyPWV4cGxpY2l0Jm9ubG9hZD1uZ1JlY2FwdGNoYUxvYWRlZCR7bGFuZ1BhcmFtfWA7XG4gICAgc2NyaXB0LmFzeW5jID0gdHJ1ZTtcbiAgICBzY3JpcHQuZGVmZXIgPSB0cnVlO1xuICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoJ25vbmNlJywgJycpO1xuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbiAgfVxufVxuIl19